ねこじゃすり
猫を魅了する魔法の装備品!
Anker PowerCor
旅行には必須の大容量モバイルバッテリー!
レッドブル エナジードリンク 250ml×24本
翼を授けよう!
モンスターエナジー 355ml×24本 [エナジードリンク]
脳を活性化させるにはこれ!
ドラゴンクエスト メタリックモンスターズギャラリー メタルキング
みんな大好き経験値の塊をデスクに常備しておこう!
MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド
Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!
サンディスク 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の導入をされて見てはいかがでしょうか♪