Docker ComposeでRedmineを動かす

目次

概要

タスク管理やプロジェクト管理のためにRedmineを動かしたくなりました。このようなすぐに動かしたいときには、Dockerを利用するのが便利です。

ここでは、Docker Composeを使ったRedmineの実行方法について紹介します。

環境

  • Debian 11
  • Redmine 4.2.3
  • Docker 20.10.12
  • docker-compose 1.25.0

方針

RedmineはDockerを利用して動かします。Redmineには、アップロードしたファイルを置く場所やプラグインを置く場所などが決められています。そこでRedmineを動かす際には、それをコンテナの外に置いておき、コンテナにマウントして利用するようにしました。

また、Redmineにはメールの設定ができ、何かあった際にメールが送られるように出来ます。そのための設定をファイルとして書いておく必要があるので、そのファイルを外部から読み込むようにします。

設定

Redmineのイメージは、Docker公式のものを利用します。

最終的に次のようなdocker-compsoe.ymlを作成しました。

version: '3'
services:
  web:
    image: redmine:4.2.3-alpine
    restart: unless-stopped
    command: 'sh -c "cp /usr/src/config/configuration.yml /usr/src/redmine/config/configuration.yml && /docker-entrypoint.sh rails server -b 0.0.0.0"'
    ports:
      - 3000:3000
    volumes:
      - /opt/redmine/config:/usr/src/config
      - /opt/redmine/files:/usr/src/redmine/files
      - /opt/redmine/plugins:/usr/src/redmine/plugins
    environment:
      REDMINE_SECRET_KEY_BASE: ここに適当なSECRET_KEYを記入します、面倒な場合はなくても大丈夫です
      # REDMINE_DB_MYSQL: データベースホスト(MySQL)
      REDMINE_DB_POSTGRES: 127.0.0.1
      REDMINE_DB_DATABASE: redmine_db
      REDMINE_DB_USERNAME: postgres # 変更必須
      REDMINE_DB_PASSWORD: password # 変更必須
  db:
    image: postgres:13
    environment:
      POSTGRES_USER: postgres # 変更必須
      POSTGRES_PASSWORD: password # 変更必須
    volumes:
      - /opt/postgres:/var/lib/postgresql/data

私の環境ではデータベースにPostgreSQLを利用しています。そのため、環境変数として設定しているものはPostgreSQLのものになります。もし、MySQLを利用する場合は、REDMINE_DB_MYSQLを設定してREDMINE_DB_POSTGRESの記述をコメントアウトします。

永続化したいファイルは/opt/redmineや/opt/postgresにあり、それをマウントしています。さらにマウントした後、ファイルをRedmineの設定ファイルが置いてある場所にコピーしています。

データベースの設定はpostgresやpasswordなど、とても単純なものを設定しているので、それぞれ書き換える必要があります。

Redmineのメール設定のために/opt/redmine/config/configuration.ymlに次のような内容でファイルを作成しました。

default:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: true
      address: smtp.gmail.com
      port: 587
      domain: smtp.gmail.com
      authentication: :login
      user_name: [email protected]
      password: パスワード

私は、メールのサーバーとしてGmailを利用しているので、Gmailの内容に沿ったものとなっています。user_nameとpasswordを適当なものに設定することで使えます。

Redmineは、3000番ポートにマッピングしているので、動かしているサーバーの3000番ポートにアクセスすることで、Redmineにアクセスできるはずです。

アクセス後は、ユーザー名がadmin、パスワードもadminで管理者としてログインできます。

さいごに

このような記述で、Redmineをインストールして動かすことが出来ました。

もしもちゃんと動かすのであれば、さらにリバースプロキシなどを設定したり、ドメインを設定したりする必要がありますが、ここではそこまで触れません。