Docker で Redmine コンテナを作る方法

様々な課題やタスクを管理するために、自由に使える課題管理システム(Issue Tracking System)があると便利かもしれません。 Docker で Redmine のコンテナを作成してみましょう。

Redmine とは?

Redmine は、オープンソースのプロジェクト管理ソフトウェアです。 Ruby on Rails で実装されています。 バグや課題の管理などに使用されていたりすることがあるため、見たことがある人も多いのではないでしょうか。

redmine.png

Docker で Redmine コンテナを作る

Docker で Redmine のコンテナを作成してみましょう。

コンテナのイメージは、下記の公式イメージを使用します。 イメージのバージョン(タグ)は特にこだわりが無ければ最新版(latest)で良いと思います。

Redmine は Web サーバー上で動作しますのが、コンテナ側のポート番号は 3000 番です。 80 番ではないので注意してください。 ホスト側から Web ブラウザ(Chrome など)で接続できるよう、コンテナ側のポート 3000 番へのマッピングを設定しましょう。 ホスト側のポート番号は、他で使用されていないものなら何番でも良いと思います。

例:ホスト側のポート 33000 番と、コンテナ側のポート 3000 番をマッピングする場合
docker-compose.yml
version: "3.8"
services:

  # Redmine コンテナ
  redmine:
    image: redmine:latest
    ports:
      - 33000:3000

管理者ユーザーでログインする

Redmine コンテナを起動すると初期状態でシステム管理者のユーザー「admin」が使用できるようになっています。 パスワードも同じく「admin」です。 ログインして動作確認をしてみましょう。

ログインID admin
パスワード admin
login.png

アップロードファイルが消えないようにする

アップロードされるファイルは、デフォルトでは "/usr/src/redmine/files" に保存されます。 Redmine コンテナを再作成したりした際にファイルが消えてしまっては困ると思いますので、 バインドマウントか名前付きボリュームを使用して、コンテナの外にファイルが保存されるようにしましょう。 ボリュームを設定しない場合は、勝手にハッシュ名のボリュームが作成されるようなのですが、 わかりづらいのでちゃんと設定した方が良いと思います。

例:バインドマウントを使用して、ホストの "./redmine-files" にデータを保存する場合
docker-compose.yml
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 コンテナを再作成したりした際にデータが消えてしまっては困ると思いますので、 バインドマウントか名前付きボリュームを使用して、 コンテナの外にファイルが保存されるようにしましょう。

例:バインドマウントを使用して、ホストの "./redmine-data" にデータを保存する場合
docker-compose.yml
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」になります。

例:MySQL コンテナのデータベース「redmine」にデータを保存する場合
docker-compose.yml
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 と同じ名前になりますので注意してください。

例:PostgreSQL コンテナのデータベース「redmine」にデータを保存する場合
docker-compose.yml
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" がありますので、変更する際の参考にすると良いでしょう。

例:ホストの "./configuration.yml" を、コンテナの "/usr/src/redmine/config/configuration.yml" にバインドマウントする場合
docker-compose.yml
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

参考サイト

関連記事

いろんな情報をまとめたりメモしたりするために、自由に使える wiki があると便利かもしれません。Docker で MediaWiki のコンテナを作成してみましょう。MediaWiki とは?MediaWiki は無料のオープンソースの Wiki ソフトウェアです。PHP で実装されています。MediaWiki は、 ...
ほとんどの Web アプリではデータを保存する際に、データベースを使用しています。XAMPP では、データベースとして MySQL と互換性のある MariaDB が採用されていますが、Docker を使用するのであればせっかくなので MySQL のコンテナを作成してみましょう。Docker で MySQL コンテナを ...
データベースのソフトウェアとしては MySQL(MariaDB)が人気だと思いますが、PostgreSQL を使用しているサービスを見かけることもあるでしょう。Docker で PostgreSQL のコンテナを作成してみましょう。Docker で PostgreSQL コンテナを作るコンテナのイメージは、下記の公式イ ...
Docker の PHP コンテナで開発する際に、テスト用のメールサーバーを使用すると便利です。メールを外部に送信せずに、メールの動作確認を行うことができます。Mailpit とは?Mailpit はテスト用に開発されたメールサーバーです。Go 言語で実装されています。本物のメールサーバーのように振舞いながらも、メール ...
Docker は、構成を気軽に組み替えたりできるので、とても便利ですよね。Windows で Docker を使って開発している方も多いと思うのですが、個人的にはどうしても気が乗らない理由がありました。それは処理速度です。遅い。遅すぎる。めちゃくちゃ遅い。つらい。耐えられない。。。ということで調査しました。いろいろと調 ...

記事検索

最新記事

人気記事

RSSフィード

お知らせ

フィードバック

要望などあれば、お気軽にどーぞ。 不具合やバグを発見した場合も、連絡をいただけると助かります。

匿名でフィードバックする
匿名でフィードバックする

要望などあれば、お気軽にどーぞ。 不具合やバグを発見した場合も、連絡をいただけると助かります。

なお、このフォームから入力された内容について、管理者から返信はできませんので注意してください。 もし、管理者からの返信が必要であれば、X(Twitter) もしくは、お問い合わせより、お願いします。

  • フィードバックの送信が完了しました。