[Docker] Docker로 Redmine 구축하기(Ubuntu 18.04 / redmine 5.0.4 / mariaDB 10.5)

     

     

    개발환경

    ubuntu 18.04

    Docker version 20.10.22

    redmine 5.0.4

    mariaDB 10.5

     

     


    1. docker 설치

    docker 설치 공식 문서 참고 (linux - ubuntu)

     

    2. redmine docker image 가져오기 (Installation에서 택 1)

    redmine docker image github 참고 (sameersbn의 redmine image를 사용했다.)

     

    3. docker-compose.yml 파일 수정

    mariaDB를 사용할 예정이기 때문에 docker-compose.yml 파일을 아래 내용으로 변경한다.

    version: '2'
    
    services: 
      database: # 컨테이너 이름
    		#마리아 db 버전 
        image: mariadb:10.5 
        environment:
          - MARIADB_USER=redmine
          - MARIADB_PASSWORD=password
          - MARIADB_DATABASE=redmine_production
          - MARIADB_RANDOM_ROOT_PASSWORD=1
        volumes:
          - /srv/docker/redmine/mariadb:/var/lib/mysql
       #/srv/docker/redmine/mariadb와 var/lib/mysql을 연결한다.
    
      redmine: # 컨테이너 이름
        build: ./
        image: sameersbn/redmine:5.0.4
    
    	# database contatiner가 먼저 생성되고 redmine 컨테이너가 생성됨을 명시함
        depends_on:
          - database 
        environment:
          - TZ=Asia/Kolkata
    
          - DB_ADAPTER=mysql2
          - DB_HOST=database
          - DB_PORT=3306
          - DB_USER=redmine
          - DB_PASS=password
          - DB_NAME=redmine_production
          - DB_SSL_MODE=preferred
    
           #host 포트와 일치시켜야함 
          - REDMINE_PORT=80 
          - REDMINE_HTTPS=false
          - REDMINE_RELATIVE_URL_ROOT=
          - REDMINE_SECRET_TOKEN=
    
          - REDMINE_SUDO_MODE_ENABLED=false
          - REDMINE_SUDO_MODE_TIMEOUT=15
    
          - REDMINE_CONCURRENT_UPLOADS=2
    
          - REDMINE_BACKUP_SCHEDULE=
          - REDMINE_BACKUP_EXPIRY=
          - REDMINE_BACKUP_TIME=
    
          - SMTP_ENABLED=false
          - SMTP_METHOD=smtp
          - SMTP_DOMAIN=www.example.com
          - SMTP_HOST=smtp.gmail.com
          - SMTP_PORT=587
          - SMTP_USER=mailer@example.com
          - SMTP_PASS=password
          - SMTP_STARTTLS=true
          - SMTP_AUTHENTICATION=:login
    
          - IMAP_ENABLED=false
          - IMAP_HOST=imap.gmail.com
          - IMAP_PORT=993
          - IMAP_USER=mailer@example.com
          - IMAP_PASS=password
          - IMAP_SSL=true
          - IMAP_INTERVAL=30
    
    	# 클라이언트가 레드마인에 접속할 수 있도록 host의 80포트와 remine의 80를 연결한다. (=포트포워딩)
        ports:
          - "80:80" // host port : contatiner port
        volumes:
          - /srv/docker/redmine/redmine_mariadb:/home/redmine/data
          - /srv/docker/redmine/redmine-logs:/var/log/redmine

     

    삽질 1 ) docker-compose.yml database 변경하기

    더보기

    해당 이미지의 docker-compose.yml 파일에서는 database가 postgresql 설정되어있어서인지 docker-compose up 시 에러가 발생하였다. mariadb로 구성해야 해서 아래 명령어로 docker-compose-mariadb.yml 파일을 받아와서 docker-compose.yml로 이름을 변경했다. 

     https://raw.githubusercontent.com/sameersbn/docker-redmine/master/docker-compose-mariadb.yml

     

     

    다른 database  세팅이 필요하다면 아래 파일명을 참고하여 명령어를 변경하면 된다.

     

    삽질 2) 레드마인 host 포트 변경

    더보기

    컨테이너는 정상적으로 실행된 거 같은데, docker-compose.yml파일에서도 알겠지만 해당 도커 이미지에서는 host 포트를 10080로 설정하고 있다. 나의 경우 레드마인 서버는 내부망에 생성했고 (192.xxx.xx.xxx:80), 해당 서버를 외부에서 접속할 수 있도록 HAProxy 설정이 되어있는데 (xxx80) 레드마인 포트를 xxx80로 세팅하니 당연히 접속이 되지 않았던 것이다 🥲 그래서 레드마인 포트를 80으로 변경하고 (= docker-compose.yml 파일 주석참고) 다시 접속하였더니 정상적으로 접근이 가능하였다.

    생활코딩

     

     

    4. 백그라운드에서 실행될 수 있도록 아래 명령어 실행

    docker-compose up -d

    * -d : 백그라운드 실행

    * 최초로 해당 명령어 실행시 1~2분 정도 소요된다. 

    * docker-compose up 명령어는 docker-compose.yml 파일을 찾아서 읽기 때문에 반드시 해당 파일이 있는 디렉토리에서 실행해야 한다.

    *  다른 경로에서 해당 명령어 실행 시 다음과 같은 에러 발생

     

    5. 실행 중인 컨테이너 확인

    docker ps

    * 반드시 redmine과 mariadb 컨테이너 둘 다 실행되어야 한다.

    * 만약, 하나라도 정상적으로 실행되지 않았다면, 에러로 인해 해당 컨테이너가 종료된 걸 수 있으니 -d 옵션을 빼고 docker-compose up명령어로 메시지 확인해 볼 것

     

    6. 접속 확인

    초기 계정은 다음과 같다.

    ID : admin 

    PWD : admin

     

     


    컨테이너 중지 

    실행 중인 컨테이너 중지 명령어 (방법 2개)

     

    방법 1 ) docker-compose up으로 실행된 컨테이너가 중지됨

    docker-compose down

     

    방법 2) 개별적으로 컨테이너 중지 가능

    e.g. docker stop root_redmine1

    docker stop [names]

     

     


    데이터 검증

     

    이미지 삭제 후 컨테이너를 재시작해도 DB 데이터가 남아있을까?라는 궁금증이 생겨서 검증해 봤다.

    결론부터 말하자면, 별도 경로에 데이터가 담기기 때문에  1)컨테이너를 재실행해도 2)이미지와 컨테이너 모두 삭제 후 실행해도 DB 데이터가 남아있었다.

     

     

    모든 컨테이너 삭제 명령어 

    docker container prune

     

    이미지 삭제 명령어

    docker rmi [names]

    만약 중복된 이미지 ID로 인하여 삭제가 안된다면 docker rmi --force [names]으로 삭제 

     

     

     

    컨테이너 삭제, 이미지 삭제 후 다시 도커 이미지를 받아와서 컨테이너를 실행했는데, 정상적으로 실행되었다. 

    docker-compose.yml 파일을 다시 보니까 database와 redmine 컨테이너에 다음과 같이 기술되어 있었다.

     

    database

    volumes:
      - /srv/docker/redmine/mariadb:/var/lib/mysql

    redmine

    volumes:
          - /srv/docker/redmine/redmine_mariadb:/home/redmine/data
          - /srv/docker/redmine/redmine-logs:/var/log/redmine

     

    즉, /srv/docker/redmine/mariadb등과 같은 별도 경로에 db에 관련된 정보가 있기 때문에 이미지를 삭제해도 데이터는 정상적으로 유지되는 것이다. 검증을 위해 해당 경로를 삭제 후 다시 레드마인에 접속하니, 기존 데이터는 모두 삭제되어 있었다. 

     

    생활 코딩

     


    처음으로 도커 설치부터 레드마인 구축까지 해봤는데, 나처럼 처음으로 docker를 사용해본다면 다음 강의를 통해 docker의 개념을 먼저 이해하고 설치하는 것을 추천한다. 이고잉님 최고..!

     

     

    728x90

    댓글