# Docker ComposeでRedmine環境構築 _**最終更新日:2023/09/18**_ Docker ComposeでRedmine環境を構築しよう。 {{toc}} ## 使用するイメージ RedmineはBitnami版Redmine、データベースはPostgres、リバースプロキシとしてHttpsPortalを使用する。 HttpsPortalは自動でLet's Encryptの証明書を取ってきてくれる機能があり、かなり便利。 ローカルやイントラネットで動作させる場合、HttpsPortalは不要だと思うので、これ自体使用しなくていい。 ### Redmine containers/bitnami/redmine at main · bitnami/containers https://github.com/bitnami/containers/tree/main/bitnami/redmine ### Postgres GitHub - docker-library/postgres: Docker Official Image packaging for Postgres https://github.com/docker-library/postgres ### HttpsPortal SteveLTN/https-portal: A fully automated HTTPS server powered by Nginx, Let's Encrypt and Docker. https://github.com/SteveLTN/https-portal ## 詳細な説明 ### Redmine 初期ユーザーと環境設定。 ``` yaml environment: - REDMINE_USERNAME=user - REDMINE_PASSWORD=password1234 - REDMINE_LANGUAGE=ja ``` データベース設定。 Postgresの設定と合わせる。 「REDMINE_DATABASE_TYPE」は使用するDBの種類、今回はPostgresを指定。 「REDMINE_DATABASE_HOST」はDB接続先、Postgresのサービス名を指定する。 ``` yaml - REDMINE_DATABASE_TYPE=postgresql - REDMINE_DATABASE_HOST=redmine_db - REDMINE_DATABASE_PORT_NUMBER=5432 - REDMINE_DATABASE_USER=redmine_user - REDMINE_DATABASE_PASSWORD=redmine_user_1234 - REDMINE_DATABASE_NAME=redmine ``` DBのコンテナが起動してから、Redmineコンテナを起動させる。 ``` yaml depends_on: - redmine_db ``` 直接Redmineにアクセスする場合は、下記の設定でアクセスするポートと内部のポートを指定する。 ``` yaml ports: - '13000:3000' ``` ### Postgres Redmine用のデータベース設定。 ``` yaml environment: - POSTGRES_USER=redmine_user - POSTGRES_PASSWORD=redmine_user_1234 - POSTGRES_DB=redmine ``` ### https-portal 特定のドメインでアクセスされた場合にRedmineへリダイレクトさせる。 上記なら「example.com」にアクセスした場合、内部の「redmine:3000」へアクセスさせる。 ``` yaml DOMAINS: 'example.com -> http://redmine:3000' ``` 本番環境の場合はこのSTAGEに「production」を設定する。 そうするとLet's Encryptへ証明書を取りに行き、ちゃんとしたHttpsで通信できるようになる。 テスト環境の場合はこの行自体をコメントアウトする。 そうするとHttpsPortalがオレオレ証明書を作り、なんちゃってHttpsで通信できるようになる。 ``` yaml STAGE: 'production' # Don't use production until staging works ``` 早い話アップロードできる最大サイズ。 画像ならこれくらいで十分だと思う。 ``` yaml CLIENT_MAX_BODY_SIZE: 10M ``` Httpsでアクセスさせる。 ``` yaml HSTS_MAX_AGE: 15768000 ``` ## docker-compose.yml ``` yaml version: '2' services: https-portal: image: 'steveltn/https-portal:1.23' container_name: 'https_portal_cont' ports: - '80:80' - '443:443' volumes: - 'https_portal_data:/var/www/vhosts' - 'https_portal_log:/var/log/nginx' - 'https_portal_logrotate:/var/lib/logrotate' environment: DOMAINS: 'example.com -> http://redmine:3000' # STAGE: 'production' # Don't use production until staging works CLIENT_MAX_BODY_SIZE: 10M HSTS_MAX_AGE: 15768000 redmine_db: image: 'postgres:16.0-alpine' container_name: 'redmine_db_cont' restart: always volumes: - 'redmine_db_data:/var/lib/postgresql/data' environment: - POSTGRES_USER=redmine_user - POSTGRES_PASSWORD=redmine_user_1234 - POSTGRES_DB=redmine redmine: image: 'docker.io/bitnami/redmine:5' container_name: 'redmine_cont' restart: always depends_on: - redmine_db volumes: - 'redmine_data:/bitnami' environment: - REDMINE_USERNAME=user - REDMINE_PASSWORD=password1234 - REDMINE_LANGUAGE=ja - REDMINE_DATABASE_TYPE=postgresql - REDMINE_DATABASE_HOST=redmine_db - REDMINE_DATABASE_PORT_NUMBER=5432 - REDMINE_DATABASE_USER=redmine_user - REDMINE_DATABASE_PASSWORD=redmine_user_1234 - REDMINE_DATABASE_NAME=redmine volumes: https_portal_data: driver: local https_portal_log: driver: local https_portal_logrotate: driver: local redmine_db_data: driver: local redmine_data: driver: local ``` ## コンテナ起動 コンテナ起動後HttpsPortalで設定したドメイン(HttpsPortal未設定の場合はRedmineに設定したポート)にアクセスして画面が表示されていれば完了。 HttpsPortalのSTAGE設定で「production」を設定した場合、Let's Encryptに証明書を取りに行くので、初回起動のときは5分ぐらい待つと良い。 --- [[redmine:wiki|メインページに戻る]]