このページで解説している内容は、以下の 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のコンテナ名--namemariadb-containerコンテナに付ける名前を指定します。
実行オプション-dit(なし)コンテナをバックグラウンドでデタッチモード、インタラクティブモード、TTYモードで実行します。
MariaDBのrootパスワード-e MYSQL_ROOT_PASSWORDmariarootpassMariaDBのrootユーザーのパスワードを設定します。
MariaDBデータベース領域名-e MYSQL_DATABASEredmine-db自動的に作成されるデータベースの名前を指定します。
MariaDBユーザー名-e MYSQL_USERredmineuser新規に作成するMariaDBユーザーの名前を指定します。
MariaDBパスワード-e MYSQL_PASSWORDuserpass指定したMariaDBユーザーのパスワードを設定します。
ポートマッピング-p3306:3306ホストとコンテナのポートをマッピングします。
リソース制限--memory512mコンテナに割り当てるメモリ量を制限します。

実行コマンド

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のコンテナ名--nameredmine-containerコンテナに付ける名前を指定します。
実行オプション-dit(なし)コンテナをバックグラウンドでデタッチモード、インタラクティブモード、TTYモードで実行します。
ポート番号を指定-p8080:3000ホストとコンテナのポートをマッピングします。
データベースのコンテナ名-e REDMINE_DB_MYSQLmariadb-containerRedmineが接続するデータベースのホスト名を指定します。
データベース領域名-e REDMINE_DB_DATABASEredmine-db使用するデータベースの名前を指定します。
データベースのユーザー名-e REDMINE_DB_USERNAMEredmineuserデータベースに接続するユーザー名を指定します。
データベースのパスワード-e REDMINE_DB_PASSWORDuserpassデータベースユーザーのパスワードを設定します。

実行コマンド

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の学習を進めていきましょう。