즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

써드파티 도구/Linux (CentOS7)

[2022.01] Redmine 4.2를 Docker로 운용하기

다물칸 2022. 1. 24. 16:43
728x90
반응형

안녕하세요! 오랜만에 글 올립니다.

아래 글은 최근(오늘^^) 엔조이데브에 등록된 글인데, 경어체를 사용하였으니 양해 부탁드려요.


필자는 Postgresql이 미리 Docker로 실행되어 있어서 redmine이라는 데이터베이스를 생성한 후, 진행하였다.

리눅스는 CentOS7을 사용하였으며, Home디렉토리에 redmine폴더를 생성한 후, 들어가자. 

 

구글에서 "Redmine Docker"로 검색하여 나온 레드마인 공식 Docker 홈페이지에서 Bullseye기반으로 동작하는 것을 찾아 실행하였다.

 

공식 레드마인 Docker Hub페이지: https://hub.docker.com/_/redmine

 

Redmine - Official Image | Docker Hub

Quick reference Supported tags and respective Dockerfile links 4.2.3, 4.2, 4, latest, 4.2.3-bullseye, 4.2-bullseye, 4-bullseye, bullseye 4.2.3-passenger, 4.2-passenger, 4-passenger, passenger 4.2.3-alpine, 4.2-alpine, 4-alpine, alpine, 4.2.3-alpine3.15, 4.

hub.docker.com

Bullseye기반 Dockerfile: https://github.com/docker-library/redmine/blob/5ceec0a28815d3a9ff740439bb5f1f8bd764290b/4.2/Dockerfile

 

GitHub - docker-library/redmine: Docker Official Image packaging for Redmine

Docker Official Image packaging for Redmine. Contribute to docker-library/redmine development by creating an account on GitHub.

github.com

위 링크의 스크립트를 "Dockerfile"을 생성하여 저장한다.

Docker-Entrypoint.sh : https://github.com/docker-library/redmine/blob/5ceec0a28815d3a9ff740439bb5f1f8bd764290b/4.2/docker-entrypoint.sh

 

GitHub - docker-library/redmine: Docker Official Image packaging for Redmine

Docker Official Image packaging for Redmine. Contribute to docker-library/redmine development by creating an account on GitHub.

github.com

위 링크의 스크립트를 "Docker-Entrypoint.sh" 파일로 생성하여 스크립트를 복사해 저장한다.

 

export IMAGE_NAME=redmine
export SOURCE_VER=4.2
 
docker rmi -f $IMAGE_NAME:$SOURCE_VER
docker build . --tag $IMAGE_NAME:$SOURCE_VER

위 코드를 복사해서 "build.sh" 파일로 저장한다.

 

export IMAGE_NAME=redmine
export SOURCE_VER=4.2
 
docker rm -f $IMAGE_NAME
docker run -d --name $IMAGE_NAME --net bridge --restart=always \
  -v /usr/share/zoneinfo/Asia/Seoul:/etc/localtime:ro \
  -e REDMINE_DB_POSTGRES=192.168.0.40 \
  -e REDMINE_DB_PORT=33000 \
  -e REDMINE_DB_USERNAME=postgres \
  -e REDMINE_DB_DATABASE=redmine \
  -e REDMINE_DB_PASSWORD=password \
 -p 40080:3000 \
 $IMAGE_NAME:$SOURCE_VER

위 코드를 복사해서 "run.sh" 파일로 저장한다.

환경정보 중 "REDMINE_DB_POSTGRES"와 "REDMINE_DB_PORT"는 각각 PostgreSQL Docker가 실행중인 호스트와 포트를 입력한다.

"REDMINE_DB_DATABASE"는 데이터베이스 이름, "REDMINE_DB_USERNAME"와 "REDMINE_DB_PASSWORD"는 각각 PostgreSQL의 사용자 이름과 패스워드를 입력한다. 포트는 Docker내부에서는 3000번 포트를 외부에서는 40080으로 매핑하였다. 

 

chmod +x *.sh
./build.sh
./run.sh
docker logs -f redmine

"chmod +x *.sh"명령을 이용해서 실행권한을 준다. 

docker빌드를 위해 "./build.sh" 명령으로 빌드한다.

"./run.sh" 명령으로 도커를 실행한다. 

"docker logs -f redmine" 명령으로 제대로 실행되는지 확인한다.

정상적으로 실행하면 아래와 같이 로그가 표시된다.

 

== 20200826153402 AddTotpToUser: migrated (0.0008s) ===========================
 
[2022-01-24 14:10:24] INFO  WEBrick 1.6.1
[2022-01-24 14:10:24] INFO  ruby 2.7.5 (2021-11-24) [x86_64-linux]
[2022-01-24 14:10:24] INFO  WEBrick::HTTPServer#start: pid=1 port=3000

실제 접속은 위 샘플코드 기준 192.168.0.40:40080으로 접속하면 접속이 된다. 

 


레드마인에서 플러그인(Plugins), 파일(Files), 환경파일(Config) 폴더는 변경되는 폴더이기 때문에 Docker내부가 아닌 외부 호스트에서 관리하는 것이 좋다. 이렇게 운용할 경우 추후 레드마인 버전을 업그레이드 할 때 도커 이미지만 변경하면 된다. 만약 내부에서 관리하면 마이그레이션 등의 작업을 수동으로 해야 하는 번거러움이 있다. 

 

export IMAGE_NAME=redmine
export SOURCE_VER=4.2
 
docker rm -f $IMAGE_NAME
docker run -d --name $IMAGE_NAME --net bridge --restart=always \
  -v /usr/share/zoneinfo/Asia/Seoul:/etc/localtime:ro \
  -v /home/workspace/run-docker/redmine/plugins:/usr/src/redmine/plugins \
  -v /home/workspace/run-docker/redmine/files:/usr/src/redmine/files \
  -v /home/workspace/run-docker/redmine/config:/usr/src/redmine/config \
  -e REDMINE_DB_POSTGRES=192.168.0.40 \
  -e REDMINE_DB_PORT=33000 \
  -e REDMINE_DB_USERNAME=postgres \
  -e REDMINE_DB_DATABASE=redmine \
  -e REDMINE_DB_PASSWORD=password \
 -p 40080:3000 \
 $IMAGE_NAME:$SOURCE_VER

 

위 코드를 run.sh 파일을 편집하여 저장한다.

다시 run.sh를 실행하면 재시작 한다. 

반응형