このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker基礎】Redmine+MariaDBコンテナの作成と実行

Redmine+MariaDBコンテナの作成と実行
ここでは、RedmineコンテナとMariaDBコンテナをDocker上で作成・実行し、両者を連携させる方法について詳しく解説します。これにより、チケット管理システムであるRedmineを効率的に構築・運用するための基盤を整えることができます。以下の手順に従って、実際にコンテナを作成し、動作確認を行いましょう。

はじめに
Redmineを利用するためには、Redmine本体だけでなく、Webサーバー(Apacheやnginx)、プログラム言語の実行環境(RubyやRails)、およびデータベース(MySQLやMariaDB)が必要です。これらの構成は多くのWebシステムで採用されており、これを「LAMP環境」と呼びます。
Redmineとは
Redmineは、オープンソースのチケット管理システムであり、プロジェクト管理やバグ追跡などに広く利用されています。Redmineを利用することで、誰が何をするのかを示したToDoリストを効率的に管理できます。特に開発現場での利用が多く、チームの生産性向上に寄与します。
RedmineもWordPressとほぼ同じ構成です。ポート番号や環境変数の名前が異なる程度で、コンテナを作成・起動する手順は非常に似ています。ここでは、RedmineとMariaDBのコンテナを作成・実行し、連携させる方法を学びます。
環境設定

作成するネットワークとコンテナの情報
以下の表に、今回作成するネットワークとコンテナの詳細情報をまとめます。
項目 | 値 |
---|---|
ネットワーク名 | redmine-network |
MariaDBコンテナ名 | mariadb-container |
MariaDBイメージ名 | mariadb:10.5 |
Redmineコンテナ名 | redmine-container |
Redmineイメージ名 | redmine:5.0.5 |
使用するコマンドのオプション、対象、引数
以下に、使用する主要なコマンドとそのオプション・引数をまとめます。
ネットワークの作成
docker network create redmine-network
- オプション:
network create
- 対象: Dockerネットワーク
- 引数: ネットワーク名 (
redmine-network
)
MariaDBコンテナの作成・起動
docker run
--name mariadb-container
-dit
--net=redmine-network
-e MYSQL_ROOT_PASSWORD=mariarootpass
-e MYSQL_DATABASE=redmine-db
-e MYSQL_USER=redmineuser
-e MYSQL_PASSWORD=userpass
mariadb:10.5
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
- オプション:
・--name
: コンテナ名の指定
・-dit
: デタッチモード、インタラクティブモード、TTYモードの組み合わせ
・--net
: ネットワーク名の指定
・-e
: 環境変数の設定 - 対象: MariaDBコンテナ
- 引数:
・--character-set-server
: 文字コード設定(例:utf8mb4
)
・--collation-server
: 照合順序設定(例:utf8mb4_unicode_ci
)
Redmineコンテナの作成・起動
docker run
--name redmine-container
-dit --net=redmine-network
-p 8080:3000
-e REDMINE_DB_MYSQL=mariadb-container
-e REDMINE_DB_DATABASE=redmine-db
-e REDMINE_DB_USERNAME=redmineuser
-e REDMINE_DB_PASSWORD=userpass
redmine:5.0.5
- オプション:
・--name
: コンテナ名の指定
・-dit
: デタッチモード、インタラクティブモード、TTYモードの組み合わせ
・--net
: ネットワーク名の指定
・-p
: ポートマッピングの設定
・-e
: 環境変数の設定 - 対象: Redmineコンテナ
- 引数: 特になし
Redmine+MariaDBコンテナの作成と実行
以下に、実際にRedmineコンテナとMariaDBコンテナを作成・実行する手順を詳しく解説します。
STEP1:ネットワークの作成
まず、RedmineとMariaDBが同じネットワーク内で通信できるように、カスタムネットワークを作成します。
使用するコマンド
docker network create redmine-network
実行結果の例
7ed329fb6fba99b9f1948bd0481dfc61e76bbfb26be964bb5af439a100774a31
解説
コマンド実行後、ネットワークIDが表示されます。このIDはネットワークの一意な識別子です。ネットワークが正常に作成されたことを確認するには、以下のコマンドを使用します。
docker network ls
確認例
ETWORK ID NAME DRIVER SCOPE
7ed329fb6fba redmine-network bridge local
解説
redmine-network
が正常に作成されていることを確認できます。
STEP2:MariaDBコンテナの作成・起動
次に、MariaDBコンテナを作成・起動します。Redmineがデータを保存するデータベースとして機能します。
使用するオプションと引数
項目 | オプション | ハンズオンでの値 | 説明 |
---|---|---|---|
MariaDBイメージ名 | (なし) | mariadb:10.5 | 使用するDockerイメージの名前とバージョンを指定します。 |
MariaDBのコンテナ名 | --name | mariadb-container | コンテナに付ける名前を指定します。 |
実行オプション | -dit | (なし) | コンテナをバックグラウンドでデタッチモード、インタラクティブモード、TTYモードで実行します。 |
MariaDBのrootパスワード | -e MYSQL_ROOT_PASSWORD | mariarootpass | MariaDBのrootユーザーのパスワードを設定します。 |
MariaDBデータベース領域名 | -e MYSQL_DATABASE | redmine-db | 自動的に作成されるデータベースの名前を指定します。 |
MariaDBユーザー名 | -e MYSQL_USER | redmineuser | 新規に作成するMariaDBユーザーの名前を指定します。 |
MariaDBパスワード | -e MYSQL_PASSWORD | userpass | 指定したMariaDBユーザーのパスワードを設定します。 |
ポートマッピング | -p | 3306:3306 | ホストとコンテナのポートをマッピングします。 |
リソース制限 | --memory | 512m | コンテナに割り当てるメモリ量を制限します。 |
実行コマンド
docker run
--name mariadb-container
-dit
--net=redmine-network
-e MYSQL_ROOT_PASSWORD=mariarootpass
-e MYSQL_DATABASE=redmine-db
-e MYSQL_USER=redmineuser
-e MYSQL_PASSWORD=userpass
-p 3306:3306
--memory=512m
mariadb:10.5
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
実行結果
PS C:\Users\joeac> docker run --name mariadb-container -dit --net=redmine-network -e MYSQL_ROOT_PASSWORD=mariarootpass -e MYSQL_DATABASE=redmine-db -e MYSQL_USER=redmineuser -e MYSQL_PASSWORD=userpass mariadb:10.5 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
Unable to find image 'mariadb:10.5' locally
10.5: Pulling from library/mariadb
d9802f032d67: Pull complete
c1aa0a434c07: Pull complete
35627bdf29eb: Pull complete
4c0eff2d67a3: Pull complete
109dda45d95f: Pull complete
43a1e784ed3f: Pull complete
569674eda147: Pull complete
c69235504c3e: Pull complete
Digest: sha256:c4561867435f5b60d43ca2bd8304ace5881ca2705e9858cc53962e64b009af00
Status: Downloaded newer image for mariadb:10.5
54923d5458f4f2c32f139f06ea92f3146a4bc2698e225f413db78d0e499ed951
解説:
コマンドが正常に実行されると、コンテナIDが表示されます。このIDはコンテナの一意な識別子であり、後でコンテナを操作する際に使用します。
コンテナの確認
docker ps
確認例
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54923d5458f4 mariadb:10.5 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp mariadb-container
解説
mariadb-container
が正常に起動していることを確認できます。
STEP3:Redmineコンテナの作成・起動
次に、Redmineコンテナを作成・起動します。MariaDBコンテナと連携して動作します。
使用するオプションと引数
項目 | オプション | 値(例) | 説明 |
---|---|---|---|
Redmineイメージ名 | (なし) | redmine:5.0.5 | 使用するDockerイメージの名前とバージョンを指定します。 |
Redmineのコンテナ名 | --name | redmine-container | コンテナに付ける名前を指定します。 |
実行オプション | -dit | (なし) | コンテナをバックグラウンドでデタッチモード、インタラクティブモード、TTYモードで実行します。 |
ポート番号を指定 | -p | 8080:3000 | ホストとコンテナのポートをマッピングします。 |
データベースのコンテナ名 | -e REDMINE_DB_MYSQL | mariadb-container | Redmineが接続するデータベースのホスト名を指定します。 |
データベース領域名 | -e REDMINE_DB_DATABASE | redmine-db | 使用するデータベースの名前を指定します。 |
データベースのユーザー名 | -e REDMINE_DB_USERNAME | redmineuser | データベースに接続するユーザー名を指定します。 |
データベースのパスワード | -e REDMINE_DB_PASSWORD | userpass | データベースユーザーのパスワードを設定します。 |
実行コマンド
docker run
--name redmine-container
-dit
--net=redmine-network
-p 8080:3000
-e REDMINE_DB_MYSQL=mariadb-container
-e REDMINE_DB_DATABASE=redmine-db
-e REDMINE_DB_USERNAME=redmineuser
-e REDMINE_DB_PASSWORD=userpass
redmine:5.0.5
実行結果
PS C:\Users\joeac> docker run -dit --name redmine-container --network redmine-network -p 8080:3000 -e REDMINE_DB_MYSQL=mariadb-container -e REDMINE_DB_DATABASE=redmine-db -e REDMINE_DB_USERNAME=redmineuser -e REDMINE_DB_PASSWORD=userpass redmine:5.0.5
Unable to find image 'redmine:5.0.5' locally
5.0.5: Pulling from library/redmine
a803e7c4b030: Pull complete
f262d9e6dfa3: Pull complete
b2403dfa54b1: Pull complete
6db22986a289: Pull complete
6036559a4852: Pull complete
6420ba9660f4: Pull complete
12c2823ab9b7: Pull complete
7f9d54c1a89c: Pull complete
6e86dc359688: Pull complete
4a058aad145c: Pull complete
15ee42fcbd4d: Pull complete
35896e248e05: Pull complete
Digest: sha256:1c9e2f6e963f1d21049ef5388f1359077c529d69a3422a8fc9fe5b371bc6a4e6
Status: Downloaded newer image for redmine:5.0.5
a4c398abbee97f87b4246aa0820774379ffc47750fb8ad5c2ccafb804d4772ef
解説
コマンドが正常に実行されると、コンテナIDが表示されます。このIDはコンテナの一意な識別子であり、後でコンテナを操作する際に使用できます。
コンテナの確認
docker ps
確認例
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a4c398abbee9 redmine:5.0.5 "docker-entrypoint.s…" 1 minute ago Up 1 minute 0.0.0.0:8080->3000/tcp redmine-container
54923d5458f4 mariadb:10.5 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp mariadb-container
解説
redmine-container
が正常に起動していることを確認できます。
STEP4:動作確認
RedmineとMariaDBのコンテナが正常に動作しているかを確認します。
ブラウザでRedmineにアクセス
ブラウザを開き、以下のURLにアクセスします。
http://localhost:8080/

- 期待される結果: Redmineの初期設定画面が表示されます。ここで、管理者アカウントの設定やプロジェクトの作成を行います。
- エラーが表示された場合: コマンドの入力ミスやネットワーク設定を再確認してください。特に、ポートマッピングや環境変数の設定に誤りがないか確認しましょう。
STEP5:後始末
開発やテストが完了したら、以下の手順でコンテナやネットワークを削除し、環境をクリーンアップします。
コンテナの停止
docker stop mariadb-container
docker stop redmine-container
コンテナの削除
docker rm mariadb-container
docker rm redmine-container
イメージの削除
docker image rm mariadb:10.5
docker image rm redmine:5.0.5
ネットワークの削除
docker network rm redmine-network
確認コマンド
各削除後に以下のコマンドで削除が正しく行われたことを確認します。
docker ps -a
docker image ls
docker network ls
注意点
- 環境変数の一致: Redmineコンテナで設定するデータベースの情報(ホスト名、データベース名、ユーザー名、パスワード)は、MariaDBコンテナ起動時に設定した値と一致させる必要があります。これが一致しないと、Redmineはデータベースに接続できず、正常に動作しません。
- ポートの競合: ホストのポート8080や3306が既に使用されている場合、別のポート番号を指定してください。例えば、
-p 8081:3000
や-p 3307:3306
のように変更します。 - セキュリティ: 簡易的なパスワードを使用していますが、実運用環境では強固なパスワードを設定し、必要に応じて環境変数ファイルやDocker Secretsを利用してパスワードを管理することが推奨されます。
- リソース管理: コンテナに割り当てるリソース(メモリやCPU)を適切に設定し、ホストマシンのリソースを効率的に活用してください。
- MariaDB特有の設定: MariaDBのコンテナであっても、環境変数名は「
MYSQL_ROOT_PASSWORD
」、「MYSQL_DATABASE
」などMySQLと同様に設定します。これはMariaDBの特殊な事情によるもので、他のデータベース(PostgreSQLなど)では異なる環境変数名を使用しますので注意してください。
まとめ
ここでは、RedmineコンテナとMariaDBコンテナをDocker上で作成・実行し、両者を連携させる方法について詳しく解説しました。以下のポイントを押さえておきましょう。
- ネットワークの作成: コンテナ同士が通信できるように、カスタムネットワークを作成します。
- MariaDBコンテナの設定: 必要な環境変数を設定し、適切なオプションを指定してMariaDBコンテナを起動します。
- Redmineコンテナの設定: MariaDBコンテナと連携するための環境変数を設定し、ポートマッピングを行ってRedmineコンテナを起動します。
- 動作確認: ブラウザを通じてRedmineにアクセスし、正常に動作していることを確認します。
- 後始末: 使用後はコンテナやネットワークを適切に停止・削除し、環境をクリーンアップします。
- セキュリティとリソース管理: 強固なパスワードの設定やリソース制限を行い、セキュアかつ効率的な環境を維持します。
- MariaDB特有の注意点: MariaDBコンテナでは、環境変数名がMySQLと同様である点に注意します。他のデータベースを使用する場合は、それぞれの環境変数名に従って設定してください。
これらの知識を基に、実際の運用環境でもRedmineとMariaDBをDocker上で効果的に管理・運用することが可能になります。次のコンテンツでは、WordPress+MariaDBコンテナのさらなる設定と運用について解説し、運用スキルをさらに深めていきます。引き続き、Dockerの学習を進めていきましょう。