Docker
Docker-compose로 한번에 레드마인&데이터베이스 실행방법
상상모음
2024. 12. 11. 17:36
docker-compose.yml 파일에서는 Redmine 5와 Redmine 6이 하나의 PostgreSQL 컨테이너를 공동으로 사용하도록 설정되어 있습니다. PostgreSQL은 다중 데이터베이스를 지원하므로, 두 Redmine 서비스가 동일한 PostgreSQL 컨테이너를 사용하면서도 별도의 데이터베이스를 사용할 수 있습니다.
# docker-compose.yml
version: '3.8'
services:
redmine5:
image: redmine:5
container_name: redmine5
depends_on:
- postgres
ports:
- "3001:3000"
environment:
REDMINE_DB_POSTGRES: postgres
REDMINE_DB_DATABASE: redmine5_db
REDMINE_DB_USERNAME: redmine5_user
REDMINE_DB_PASSWORD: redmine5_pass
volumes:
- redmine5_data:/usr/src/redmine/files
redmine6:
image: redmine:6
container_name: redmine6
depends_on:
- postgres
ports:
- "3002:3000"
environment:
REDMINE_DB_POSTGRES: postgres
REDMINE_DB_DATABASE: redmine6_db
REDMINE_DB_USERNAME: redmine6_user
REDMINE_DB_PASSWORD: redmine6_pass
volumes:
- redmine6_data:/usr/src/redmine/files
postgres:
image: postgres:latest
container_name: postgres
environment:
POSTGRES_USER: postgres_admin
POSTGRES_PASSWORD: postgres_pass
POSTGRES_DB: postgres
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
redmine5_data:
redmine6_data:
postgres_data:
각 항목 설명
version
버전: Compose 파일의 버전. 일반적으로 최신 기능을 지원하는 3.8 버전을 사용합니다.
services
서비스 정의: Redmine 5, Redmine 6, PostgreSQL을 각각 서비스로 정의합니다.
redmine5 서비스
image: 사용할 Docker 이미지를 지정합니다. redmine:5는 Redmine 5 버전을 사용합니다.
container_name: 컨테이너 이름을 지정합니다.
depends_on: 이 컨테이너가 실행되기 전에 postgres가 실행되어야 함을 나타냅니다.
ports: 호스트의 포트와 컨테이너 내부 포트를 매핑합니다 (3001 → 3000).
environment: 데이터베이스 연결 정보를 환경 변수로 전달합니다.
- REDMINE_DB_POSTGRES: PostgreSQL 컨테이너 이름.
- REDMINE_DB_DATABASE: 사용할 데이터베이스 이름.
- REDMINE_DB_USERNAME: PostgreSQL 사용자 이름.
- REDMINE_DB_PASSWORD: PostgreSQL 비밀번호.
- volumes: Redmine의 파일 데이터를 호스트에 영구 저장하기 위해 볼륨을 설정합니다.
redmine6 서비스
- Redmine 6 버전 컨테이너를 생성하는 설정이며, Redmine 5와 유사하지만 포트 번호 (3002:3000)와 데이터 볼륨 이름이 다릅니다.
postgres 서비스
- image: PostgreSQL의 최신 버전을 사용합니다.
- container_name: 컨테이너 이름을 설정합니다.
- environment:
- POSTGRES_USER: PostgreSQL 사용자 이름.
- POSTGRES_PASSWORD: PostgreSQL 비밀번호.
- POSTGRES_DB: 기본 데이터베이스 이름.
- volumes: 데이터베이스 데이터를 호스트에 저장하기 위해 볼륨을 설정합니다.
volumes
- 데이터 영구 저장소: 컨테이너가 삭제되더라도 데이터가 유지되도록 호스트의 볼륨을 사용합니다.
- redmine5_data: Redmine 5의 파일 데이터를 저장.
- redmine6_data: Redmine 6의 파일 데이터를 저장.
- postgres_data: PostgreSQL 데이터베이스 데이터를 저장.
실행 방법
- 위 docker-compose.yml 파일을 저장합니다.
- 터미널에서 해당 파일이 있는 디렉토리로 이동합니다.
- 다음 명령어를 실행하여 컨테이너를 시작합니다
- docker-compose up -d
브라우저에서 http://localhost:3001 또는 http://localhost:3002로 접속하여 Redmine에 접근할 수 있습니다.