Docker で Redmine コンテナを作る方法
様々な課題やタスクを管理するために、自由に使える課題管理システム(Issue Tracking System)があると便利かもしれません。 Docker で Redmine のコンテナを作成してみましょう。
Redmine とは?
Redmine は、オープンソースのプロジェクト管理ソフトウェアです。 Ruby on Rails で実装されています。 バグや課題の管理などに使用されていたりすることがあるため、見たことがある人も多いのではないでしょうか。
Docker で Redmine コンテナを作る
Docker で Redmine のコンテナを作成してみましょう。
コンテナのイメージは、下記の公式イメージを使用します。
イメージのバージョン(タグ)は特にこだわりが無ければ最新版(latest)で良いと思います。
Redmine は Web サーバー上で動作しますのが、コンテナ側のポート番号は 3000 番です。 80 番ではないので注意してください。 ホスト側から Web ブラウザ(Chrome など)で接続できるよう、コンテナ側のポート 3000 番へのマッピングを設定しましょう。 ホスト側のポート番号は、他で使用されていないものなら何番でも良いと思います。
version: "3.8"
services:
# Redmine コンテナ
redmine:
image: redmine:latest
ports:
- 33000:3000
管理者ユーザーでログインする
Redmine コンテナを起動すると初期状態でシステム管理者のユーザー「admin」が使用できるようになっています。 パスワードも同じく「admin」です。 ログインして動作確認をしてみましょう。
| ログインID | admin |
|---|---|
| パスワード | admin |
アップロードファイルが消えないようにする
アップロードされるファイルは、デフォルトでは "/usr/src/redmine/files" に保存されます。 Redmine コンテナを再作成したりした際にファイルが消えてしまっては困ると思いますので、 バインドマウントか名前付きボリュームを使用して、コンテナの外にファイルが保存されるようにしましょう。 ボリュームを設定しない場合は、勝手にハッシュ名のボリュームが作成されるようなのですが、 わかりづらいのでちゃんと設定した方が良いと思います。
version: "3.8"
services:
# Redmine コンテナ
redmine:
image: redmine:latest
ports:
- 33000:3000
volumes:
- ./redmine-files:/usr/src/redmine/files
データベースを使用する
Redmine のデータはデータベースに保存されます。 データベースには SQLite、MySQL(MariaDB)、PostgreSQL などが使用できます。 デフォルトでは SQLite が使用されます。
SQLite を使用する
SQLite を使用する場合は、データは Redmine コンテナの中にファイルとして保存されますので、 Redmine コンテナだけで動作させることができます。 SQLite のデータはデフォルトでは "/usr/src/redmine/sqlite/redmine.db" に保存されます。 Redmine コンテナを再作成したりした際にデータが消えてしまっては困ると思いますので、 バインドマウントか名前付きボリュームを使用して、 コンテナの外にファイルが保存されるようにしましょう。
version: "3.8"
services:
# Redmine コンテナ
redmine:
image: redmine:latest
ports:
- 33000:3000
volumes:
- ./redmine-files:/usr/src/redmine/files
- ./redmine-data:/usr/src/redmine/sqlite
MySQL(MariaDB) を使用する
MySQL(MariaDB)を使用する場合は、MySQL コンテナを用意する必要があります。 MySQL コンテナを作成する方法は「Docker で MySQL コンテナを作る方法」を参考にしてください。
Redmine コンテナは、接続先の MySQL コンテナが起動していない状態だと意味が無いと思いますので、
depends_on の項目で、MySQL コンテナの後に起動するように設定しておくと良いでしょう。
Redmine コンテナから MySQL コンテナへの接続情報は、環境変数で指定できます。
環境変数 REDMINE_DB_MYSQLで、接続先のホストを指定します。
ホスト名には docker-compose.yml で定義しているサービス名(つまり、services 項目で指定しているキー)を使用できます。
下記の例では、ホスト名として "mysql" が使用できます。
MySQL コンテナの中にデータベースを先に作っておく必要があるので注意してください。
テーブルは自動で作成されますが、データベースは自動で作成してくれません。
データベース名は、環境変数 REDMINE_DB_DATABASE で指定できます。
デフォルトでは「redmine」になります。
version: "3.8"
services:
# MySQL コンテナ
mysql:
image: mysql:latest
volumes:
- ./mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
# Redmine コンテナ
redmine:
image: redmine:latest
ports:
- 33000:3000
depends_on:
- mysql
volumes:
- ./redmine-files:/usr/src/redmine/files
environment:
REDMINE_DB_MYSQL: mysql
REDMINE_DB_USERNAME: root
REDMINE_DB_PASSWORD: password
REDMINE_DB_DATABASE: redmine
PostgreSQL を使用する
PostgreSQL を使用する場合は、PostgreSQL コンテナを用意する必要があります。 PostgreSQL コンテナを作成する方法は「Docker で PostgreSQL コンテナを作る方法」を参考にしてください。
Redmine コンテナは、接続先の PostgreSQL コンテナが起動していない状態だと意味が無いと思いますので、
depends_on の項目で、PostgreSQL コンテナの後に起動するように設定しておくと良いでしょう。
Redmine コンテナから PostgreSQL コンテナへの接続情報は、環境変数で指定できます。
環境変数 REDMINE_DB_POSTGRESで、接続先のホストを指定します。
ホスト名には docker-compose.yml で定義しているサービス名(つまり、services 項目で指定しているキー)を使用できます。
下記の例では、ホスト名として "postgresql" が使用できます。
PostgreSQL コンテナの中にデータベースを先に作っておく必要があるので注意してください。
テーブルは自動で作成されますが、データベースは自動で作成してくれません。
データベース名は、環境変数 REDMINE_DB_DATABASE で指定できます。
デフォルトでは、環境変数 REDMINE_DB_USERNAME と同じ名前になりますので注意してください。
version: "3.8"
services:
# PostgreSQL コンテナ
postgresql:
image: postgres:latest
volumes:
- ./postgresql-data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: password
# Redmine コンテナ
redmine:
image: redmine:latest
ports:
- 33000:3000
depends_on:
- postgresql
volumes:
- ./redmine-files:/usr/src/redmine/files
environment:
REDMINE_DB_POSTGRES: postgresql
REDMINE_DB_USERNAME: postgres
REDMINE_DB_PASSWORD: password
REDMINE_DB_DATABASE: redmine
上級者向け補足:設定ファイルを変更する
あまり用途は無いような気がするのですが、上級者の方に向けて、設定ファイルの変更方法も記載しておきます。 例えば、Redmine から送られるメールの内容を確認したいといった場合には、 メールサーバーの設定を行うために、設定ファイルの内容を変更する必要があるでしょう。
Redmine の設定ファイルの場所は "/usr/src/redmine/config/configuration.yml" です。 同じディレクトリに設定ファイルのサンプルファイル "configuration.yml.example" がありますので、変更する際の参考にすると良いでしょう。
version: "3.8"
services:
# Redmine コンテナ
redmine:
image: redmine:latest
ports:
- 33000:3000
volumes:
- ./configuration.yml:/usr/src/redmine/config/configuration.yml
- ./redmine-files:/usr/src/redmine/files

