投稿日:
【Dockerサービスの必須ツール】docker-composeで複数コンテナを簡単管理
YouTubeも見てね♪
Anker PowerCor
旅行には必須の大容量モバイルバッテリー!
【最新機種】GoPro hero11 Black
最新機種でVlogの思い出を撮影しよう!
[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット
防水暴風で耐久性抜群なので旅行で大活躍です!
モンスターエナジー 355ml×24本 [エナジードリンク]
脳を活性化させるにはこれ!
Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK
メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!
BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール
もう一人の僕を呼び覚ませ!!
サンディスク microSD 128GB
スマホからSwitchまで使える大容量MicroSDカード!
目次
Docker管理の課題
複数コンテナ管理のしにくさ
以前、Dockerfileを使ってコンテナを作成し、runコマンドを使ってコンテナを起動する方法を紹介しました。
単体のコンテナを起動して、単一のコンテナだけで完結するのであれば、コマンド一発で起動/停止を実行出来るのでそこまで使いづらさを感じることはありませんが、Docker内に複数のコンテナを起動し、それぞれで連携をするような構成にした場合、コマンドを実行する回数が増えてしまい、とても管理しにくい状態になってしまいます。
例として、以下の記事でやったようなRedmineとMySQLを同時に動かす場合を考えてみましょう。
起動するたびにコンテナの台数分コマンドを投げて動かす必要があるのですが、コンテナ数が増えると毎回コマンドを打つのはとても手間になってしまいます。
また、Shellスクリプトにしてもいいですが、多少複雑なスクリプトを書く必要がありちょっと敷居が高いです。
そんな時にDockerCompose
そんな複数のコンテナ管理を簡単にしてくれるツールが「Docker Compose」です。
docker-composeファイルに各コンテナの情報を記載し、起動コマンドで読み込ませることで一気に複数のコンテナを起動することが可能です。
また、docker-comoposeファイルはyaml形式での記述なので、スマートに設定を記述することが出来ます。
今回は直接dockerコマンドで起動していたRedmineとMySQLをdocker-composeで起動するようにリファクタリングしてみましょう。
手順
前提
- Dockerインストール済み(docker for macでインストール可能)
- DockerComposeインストール済み(docker for macでインストール可能)
- RedmineのDockerイメージ取得済み
- MySQLのDockerイメージ取得済み
参考
docker-compose.ymlの作成
dockerコマンドで直接2つのコンテナを起動していた部分をdocker-composeに書き直すと以下のようになります。
※docker-composeで動くように多少変更しています
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
version: '2'
services:
mysql-redmine:
image: sameersbn/mysql:latest
volumes:
- {任意のディレクトリ}/redmine/datastore/mysql:/var/lib/mysql
environment:
- DB_NAME=redmine_production
- DB_USER=redmine
- DB_PASS=redpass
redmine:
image: sameersbn/redmine:3.3.1
ports:
- "80:80"
environment:
- DB_HOST=mysql-redmine
- DB_NAME=redmine_production
- DB_USER=redmine
- DB_PASS=redpass
volumes:
- {任意のディレクトリ}/redmine/datastore/redmine:/home/redmine/data
links:
- mysql-redmine
|
確認
では、実際に確認してみましょう。
以下のコマンドで起動が出来ます。
1 |
docker-compose up -d
|
以下のようなログが出力されてコンテナが起動されます。
1
2
3
|
Creating dockercomposesample_mysql-redmine_1 ... done
Creating dockercomposesample_mysql-redmine_1 ...
Creating dockercomposesample_redmine_1 ... done
|
http://localhost/にアクセスして以下の画面が表示されればdocker-composeへのリファクタリング完了です。
終わりに
以上のように、起動オプションをファイル管理出来るようになるので可視性や保守性が上がり、起動もコマンド一発で済むようになりました。
dockerの技術はまだまだ発展しており、複数のコンテナを起動してサービスを実現する事も少なくないので、是非docker-composeの導入をされて見てはいかがでしょうか♪