【どっかーこんぽーず】

Docker Compose とは?

💡 「docker compose up」の一言で、開発環境がまるごと立ち上がる魔法
📌 このページのポイント
Docker Compose:YAMLで複数コンテナを一括管理 compose.yaml services: web: node:20 db: postgres:16 cache: redis:7 volumes: networks: docker compose up Docker ネットワーク(自動作成) Web Node.js :3000 DB PostgreSQL :5432 Cache Redis :6379 1コマンドで起動・停止・再構築 → 開発環境を標準化
compose.yamlで定義した複数コンテナ(Web + DB + Cache)を一括管理
ひよこ ひよこ

Docker Composeって普通のDockerと何が違うの?

ペンギン先生 ペンギン先生

普通のdocker runコマンドは1つのコンテナを起動するものだけど、実際のアプリは「Webサーバー+DB+Redis」みたいに複数のコンテナが必要だよね。Docker Composeはそれらをまとめて定義・管理できるツールなんだ。

ひよこ ひよこ

YAMLファイルにはどんなことを書くの?

ペンギン先生 ペンギン先生

各サービス(コンテナ)のイメージ名、ポート番号環境変数、ボリューム(データ保存先)、依存関係なんかを書くよ。たとえば「webサービスはNode.js、dbサービスはPostgreSQL、cacheサービスはRedis」みたいに並べるんだ。

ひよこ ひよこ

Kubernetesとはどう使い分けるの?

ペンギン先生 ペンギン先生

Docker Composeはローカル開発や小規模な本番環境向け。Kubernetesは大規模な本番環境でのオーケストレーション向けだよ。開発者が手元でdocker compose upして開発し、本番ではKubernetesデプロイするという使い分けが多いね。

ひよこ ひよこ

docker-compose.ymlとcompose.yamlの違いは?

ペンギン先生 ペンギン先生

歴史的な経緯だよ。昔は「docker-compose」が別のPython製ツールで、設定ファイルもdocker-compose.ymlだった。今はDocker本体に統合されて「docker compose」(ハイフンなし)コマンドになり、ファイル名もcompose.yamlが推奨になったんだ。

ひよこ ひよこ

本番環境でも使っていいの?

ペンギン先生 ペンギン先生

小〜中規模なら全然ありだよ。ただしDocker Composeには自動スケールやローリングアップデート、自動復旧といった機能がないから、高可用性が必要な本番ではKubernetesやECS、Docker Swarmを検討した方がいいね。開発環境の構築ツールとしては今も最強クラスだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
Docker Compose」って出てきたら「複数コンテナYAMLにまとめて一発起動するツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Docker Compose」 = Dockerの構成・作曲
💬 「Compose(構成する/作曲する)」の名の通り、複数のコンテナをオーケストラのように調和させて動かすイメージだよ
← 用語集にもどる