素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

投稿日:

【Dockerサービスの必須ツール】docker-composeで複数コンテナを簡単管理

YouTubeも見てね♪

Anker PowerCor

created by Rinker
Anker
¥4,990 (2024/04/03 21:42:08時点 Amazon調べ-詳細)

旅行には必須の大容量モバイルバッテリー!

【最新機種】GoPro hero11 Black

created by Rinker
GoPro(ゴープロ)
¥62,000 (2024/04/03 21:42:08時点 Amazon調べ-詳細)

最新機種でVlogの思い出を撮影しよう!

[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット

created by Rinker
THE NORTH FACE(ザノースフェイス)
¥33,430 (2024/04/03 21:42:09時点 Amazon調べ-詳細)

防水暴風で耐久性抜群なので旅行で大活躍です!

モンスターエナジー 355ml×24本 [エナジードリンク]

created by Rinker
モンスター
¥4,748 (2024/04/03 21:33:15時点 Amazon調べ-詳細)

脳を活性化させるにはこれ!

Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK

created by Rinker
Bauhutte(バウヒュッテ)
¥14,935 (2024/04/03 21:42:10時点 Amazon調べ-詳細)

メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!

BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール

created by Rinker
BANDAI SPIRITS(バンダイ スピリッツ)
¥7,500 (2024/04/03 21:42:14時点 Amazon調べ-詳細)

もう一人の僕を呼び覚ませ!!

サンディスク microSD 128GB

スマホからSwitchまで使える大容量MicroSDカード!

Docker管理の課題

複数コンテナ管理のしにくさ

以前、Dockerfileを使ってコンテナを作成し、runコマンドを使ってコンテナを起動する方法を紹介しました。

単体のコンテナを起動して、単一のコンテナだけで完結するのであれば、コマンド一発起動/停止を実行出来るのでそこまで使いづらさを感じることはありませんが、Docker内に複数のコンテナを起動し、それぞれで連携をするような構成にした場合、コマンドを実行する回数が増えてしまい、とても管理しにくい状態になってしまいます。

例として、以下の記事でやったようなRedmineとMySQLを同時に動かす場合を考えてみましょう。

起動するたびにコンテナの台数分コマンドを投げて動かす必要があるのですが、コンテナ数が増えると毎回コマンドを打つのはとても手間になってしまいます。

また、Shellスクリプトにしてもいいですが、多少複雑なスクリプトを書く必要がありちょっと敷居が高いです。

そんな時にDockerCompose

そんな複数のコンテナ管理を簡単にしてくれるツールが「Docker Compose」です。

docker-composeファイルに各コンテナの情報を記載し、起動コマンドで読み込ませることで一気に複数のコンテナを起動することが可能です。

また、docker-comoposeファイルはyaml形式での記述なので、スマートに設定を記述することが出来ます。

今回は直接dockerコマンドで起動していたRedmineMySQLをdocker-composeで起動するようにリファクタリングしてみましょう。

手順

前提

Point
  • Dockerインストール済み(docker for macでインストール可能)
  • DockerComposeインストール済み(docker for macでインストール可能)
  • RedmineのDockerイメージ取得済み
  • MySQLのDockerイメージ取得済み

参考

docker-compose.ymlの作成

dockerコマンドで直接2つのコンテナを起動していた部分をdocker-composeに書き直すと以下のようになります。
※docker-composeで動くように多少変更しています

確認

では、実際に確認してみましょう。
以下のコマンドで起動が出来ます。

以下のようなログが出力されてコンテナが起動されます。

http://localhost/にアクセスして以下の画面が表示されればdocker-composeへのリファクタリング完了です。

終わりに

以上のように、起動オプションをファイル管理出来るようになるので可視性保守性が上がり、起動もコマンド一発で済むようになりました。

dockerの技術はまだまだ発展しており、複数のコンテナを起動してサービスを実現する事も少なくないので、是非docker-composeの導入をされて見てはいかがでしょうか♪

CATEGORIES & TAGS

IT