IT기술/도커 (docker)

Docker Redmine과 MariaDB 연동 완벽 가이드: 프로젝트 관리 시스템 구축하기

후스파 2025. 7. 9. 07:18
반응형

레드마인은 프로젝트 관리 및 티켓 시스템으로 널리 사용되는 소프트웨어입니다. 본 포스트에서는 레드마인과 MariaDB를 Docker 컨테이너에서 연동하는 방법을 자세히 설명하겠습니다.


레드마인 소개

레드마인은 다양한 업무를 관리할 수 있는 강력한 도구로, 팀의 작업을 효과적으로 추적하고 관리할 수 있도록 도와줍니다. 웹 기반 애플리케이션으로, 사용자는 티켓을 생성하고, 상태를 업데이트하며, 팀원들과의 협업을 통해 업무를 진행할 수 있습니다.

레드마인의 주요 기능

  • 이슈 추적 및 관리: 버그, 기능 요청, 작업 등을 체계적으로 관리
  • 프로젝트 관리: 다중 프로젝트 지원 및 계층적 프로젝트 구조
  • 시간 추적: 작업 시간 기록 및 보고서 생성
  • 위키 및 문서 관리: 프로젝트 문서화 및 지식 공유
  • 간트 차트: 프로젝트 일정 시각화
  • 사용자 권한 관리: 역할 기반 접근 제어

네트워크 생성

레드마인과 MariaDB 컨테이너가 통신할 수 있도록 Docker 네트워크를 생성합니다. 아래 명령어를 사용하여 redminenet라는 이름의 네트워크를 생성합니다:

docker network create redminenet

이 명령어를 실행하면 다음과 같은 출력이 나타납니다:

3de68c6f5445fb2afe41f0064c5ff4cd75b4bba72104fc02d55f4d0978fa4910

네트워크가 성공적으로 생성되었는지 확인하려면 다음 명령어를 사용합니다:

docker network ls

출력 결과:

NETWORK ID     NAME         DRIVER    SCOPE
d028c4245678   bridge       bridge    local
c30ea96f3f05   host         host      local
f425b0135de3   none         null      local
3de68c6f5445   redminenet   bridge    local

출력 결과에서 redminenet이 포함된 것을 확인할 수 있습니다.


MariaDB 컨테이너 생성 및 실행

이제 MariaDB 컨테이너를 생성하고 실행합니다. 아래 명령어를 사용합니다:

docker run --name mariadb001 -dit --net=redminenet -p 33060:3306 \
-e MYSQL_ROOT_PASSWORD=admin123 \
-e MYSQL_DATABASE=redminedb \
-e MYSQL_USER=redmine \
-e MYSQL_PASSWORD=redminepw mariadb \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--default-authentication-plugin=mysql_native_password

실행 결과:

Unable to find image 'mariadb:latest' locally
latest: Pulling from library/mariadb
8bb55f067777: Pull complete 
8410d55eb77c: Pull complete 
24c84580ff96: Pull complete 
bd1171ed6095: Pull complete 
5df637411ef1: Pull complete 
033a5155e996: Pull complete 
8b8e1299a1e9: Pull complete 
4ca4fe05a5b4: Pull complete 
Digest: sha256:a9547599cd87d7242435aea6fda22a9d83e2c06d16c658ef70d2868b3d3f6a80
Status: Downloaded newer image for mariadb:latest

MariaDB 환경 변수 설명

위 명령어에서 설정한 내용은 다음과 같습니다:

MYSQL_ROOT_PASSWORDMariaDB의 루트 비밀번호를 설정합니다
MYSQL_DATABASE생성할 데이터베이스의 이름을 지정합니다
MYSQL_USER데이터베이스에 접근할 사용자 이름을 설정합니다
MYSQL_PASSWORD해당 사용자의 비밀번호를 설정합니다

명령어 실행 시 MariaDB 이미지를 찾지 못하면 자동으로 다운로드됩니다.


레드마인 컨테이너 생성 및 실행

이제 레드마인 컨테이너를 생성하고 실행합니다. 아래 명령어를 사용합니다:

docker run --name redmine001 -dit --network redminenet -p 8888:3000 \
-e REDMINE_DB_MYSQL=mariadb001 \
-e REDMINE_DB_DATABASE=redminedb \
-e REDMINE_DB_USERNAME=redmine \
-e REDMINE_DB_PASSWORD=redminepw redmine

실행 결과:

Unable to find image 'redmine:latest' locally
latest: Pulling from library/redmine
7ce705000c39: Already exists 
df7b0e6036e7: Pull complete 
584160467417: Pull complete 
16c8c1c53139: Pull complete 
03e28f426cd9: Pull complete 
02cb6e11f220: Pull complete 
a64bcfe0d96b: Pull complete 
cb40df7cc416: Pull complete 
faa4ef062f1d: Pull complete 
3cfa8ef2398b: Pull complete 
d31b520d96b8: Pull complete 
0f6b4b4dc185: Pull complete 
beeb6f2b78ac: Pull complete 
Digest: sha256:a803d085f112f3a950111f253d1e8d68f4323114e9abea6f8ffa022c1c487610
Status: Downloaded newer image for redmine:latest

레드마인 환경 변수 설명

여기서 설정한 내용은 다음과 같습니다:

REDMINE_DB_MYSQLMariaDB 컨테이너의 이름을 지정합니다
REDMINE_DB_DATABASE사용할 데이터베이스의 이름을 설정합니다
REDMINE_DB_USERNAMEMariaDB에 접근할 사용자 이름을 설정합니다
REDMINE_DB_PASSWORD해당 사용자의 비밀번호를 설정합니다

레드마인 이미지를 찾지 못하면 자동으로 다운로드됩니다.


컨테이너 상태 확인 및 접속

컨테이너 상태 확인

docker ps -a

출력 예시:

CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                     NAMES
9802c4eb8a5a   redmine   "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   0.0.0.0:8888->3000/tcp   redmine001
2287fb2c0b35   mariadb   "docker-entrypoint.s…"   5 minutes ago   Up 5 minutes   0.0.0.0:33060->3306/tcp  mariadb001

레드마인 웹 인터페이스 접속

브라우저에서 http://localhost:8888로 접속하여 레드마인 초기 설정을 진행합니다.
기본 관리자 계정:

  • 사용자명: admin
  • 비밀번호: admin

초기 설정 과정

  1. 관리자 계정으로 로그인
  2. 관리 > 설정에서 기본 설정 구성
  3. 프로젝트 생성 및 사용자 추가
  4. 워크플로우 및 이슈 유형 설정

사용하지 않는 리소스 정리

컨테이너와 이미지를 사용한 후에는 필요 없는 리소스를 정리하는 것이 좋습니다. 다음 명령어를 사용하여 사용하지 않는 이미지와 컨테이너, 네트워크를 정리할 수 있습니다:

docker system prune

실행 결과:

WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N] y

이 명령어는 사용하지 않는 모든 리소스를 정리하므로, 주의하여 사용해야 합니다.

선택적 정리 명령어

# 컨테이너만 정리
docker container prune

# 이미지만 정리
docker image prune

# 네트워크만 정리
docker network prune

# 볼륨만 정리
docker volume prune

Docker Compose를 활용한 개선된 방법

docker-compose.yml 파일 작성

version: '3.8'

services:
  mariadb:
    image: mariadb:latest
    container_name: mariadb001
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: admin123
      MYSQL_DATABASE: redminedb
      MYSQL_USER: redmine
      MYSQL_PASSWORD: redminepw
    command: >
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_unicode_ci
      --default-authentication-plugin=mysql_native_password
    volumes:
      - mariadb_data:/var/lib/mysql
    networks:
      - redminenet

  redmine:
    image: redmine:latest
    container_name: redmine001
    restart: always
    ports:
      - "8888:3000"
    environment:
      REDMINE_DB_MYSQL: mariadb001
      REDMINE_DB_DATABASE: redminedb
      REDMINE_DB_USERNAME: redmine
      REDMINE_DB_PASSWORD: redminepw
    volumes:
      - redmine_data:/usr/src/redmine/files
      - redmine_plugins:/usr/src/redmine/plugins
    networks:
      - redminenet
    depends_on:
      - mariadb

volumes:
  mariadb_data:
  redmine_data:
  redmine_plugins:

networks:
  redminenet:
    driver: bridge

Docker Compose 실행

# 서비스 시작
docker-compose up -d

# 로그 확인
docker-compose logs -f

# 서비스 중지
docker-compose down

# 볼륨까지 삭제
docker-compose down -v

결론

이제 레드마인과 MariaDB 컨테이너가 성공적으로 연동되었습니다. 이러한 설정을 통해 프로젝트 관리 및 업무 추적을 효율적으로 수행할 수 있습니다.
핵심 포인트:

  • 커스텀 네트워크 생성을 통한 컨테이너 간 안전한 통신
  • 환경 변수 설정으로 데이터베이스 연결 자동화
  • 볼륨 마운트 활용으로 데이터 영속성 보장
  • Docker Compose 활용으로 다중 컨테이너 관리 자동화
  • 정기적인 리소스 정리를 통한 시스템 최적화

Docker를 활용한 레드마인 구축을 통해 팀의 프로젝트 관리 효율성을 크게 향상시킬 수 있으며, 컨테이너 기술의 장점을 최대한 활용하여 안정적이고 확장 가능한 프로젝트 관리 환경을 구축할 수 있습니다.

반응형