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

投稿日:

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

YouTubeも見てね♪

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2025/01/05 12:56:12時点 Amazon調べ-詳細)

猫を魅了する魔法の装備品!

Anker PowerCor

created by Rinker
Anker
¥3,990 (2025/01/05 12:09:11時点 Amazon調べ-詳細)

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

【最新機種】GoPro hero11 Black

created by Rinker
¥61,300 (2025/01/05 20:59:47時点 楽天市場調べ-詳細)

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

ペヤング ソースやきそば 120g×18個

created by Rinker
ペヤング
¥3,280 (2025/01/05 12:33:38時点 Amazon調べ-詳細)

とりあえず保存食として買っておけば間違いなし!

レッドブル エナジードリンク 250ml×24本

created by Rinker
Red Bull(レッドブル)
¥4,000 (2025/01/05 12:33:39時点 Amazon調べ-詳細)

翼を授けよう!

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

created by Rinker
モンスター
¥4,718 (2025/01/05 12:33:40時点 Amazon調べ-詳細)

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

MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド

Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!

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