プロジェクト

全般

プロフィール

Docker ComposeでRedmine環境構築

最終更新日:2023/09/18

Docker ComposeでRedmine環境を構築しよう。

使用するイメージ

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

初期ユーザーと環境設定。

environment:
  - REDMINE_USERNAME=user
  - REDMINE_PASSWORD=password1234
  - REDMINE_LANGUAGE=ja

データベース設定。
Postgresの設定と合わせる。
「REDMINE_DATABASE_TYPE」は使用するDBの種類、今回はPostgresを指定。
「REDMINE_DATABASE_HOST」はDB接続先、Postgresのサービス名を指定する。

  - 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コンテナを起動させる。

depends_on:
  - redmine_db

直接Redmineにアクセスする場合は、下記の設定でアクセスするポートと内部のポートを指定する。

ports:
  - '13000:3000'

Postgres

Redmine用のデータベース設定。

environment:
  - POSTGRES_USER=redmine_user
  - POSTGRES_PASSWORD=redmine_user_1234
  - POSTGRES_DB=redmine

https-portal

特定のドメインでアクセスされた場合にRedmineへリダイレクトさせる。
上記なら「example.com」にアクセスした場合、内部の「redmine:3000」へアクセスさせる。

DOMAINS: 'example.com -> http://redmine:3000'

本番環境の場合はこのSTAGEに「production」を設定する。
そうするとLet's Encryptへ証明書を取りに行き、ちゃんとしたHttpsで通信できるようになる。
テスト環境の場合はこの行自体をコメントアウトする。
そうするとHttpsPortalがオレオレ証明書を作り、なんちゃってHttpsで通信できるようになる。

STAGE: 'production' # Don't use production until staging works

早い話アップロードできる最大サイズ。
画像ならこれくらいで十分だと思う。

CLIENT_MAX_BODY_SIZE: 10M

Httpsでアクセスさせる。

HSTS_MAX_AGE: 15768000

docker-compose.yml

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分ぐらい待つと良い。


メインページに戻る

他の形式にエクスポート: PDF HTML TXT