初めに
Dockerfile が「1つの環境」を作るものだとすると、
docker-compose は「複数の環境をまとめる仕組み」です。
Dockerfileについては、前回の記事を参照してください。
- Web + DB
- API + Redis
- 開発環境一式
のようなものを1コマンドで起動できます。
docker-composeとは?
docker-composeは
複数の Docker コンテナ構成を YAML で定義するツール
です。
docker compose up
というコマンド一つで立ち上げることができます。
docker-compose の最小構成
services:
app:
image: alpine
command: echo "Hello compose"
※2026/1/4追記
@YuneKichiさんにdocker-compose.ymlにおけるversion表記は非推奨であると教えていただきました。ありがとうございます。
servicesの基本構造
services:
サービス名:
image: 使用するイメージ
build: Dockerfile の場所
ports:
volumes:
Dockerfile と連携する
services:
app:
build: .
container_name: my_app
.にあるDockerfileを使用する。
ポートフォワーディング
ports:
- "8080:80"
| 左 | 右 |
|---|---|
| ホスト | コンテナ |
ボリューム(ファイル共有)
volumes:
- .:/app
- ローカルの変更が即反映
- マウントに近い
環境変数
environment:
- DEBUG=1
複数コンテナ設定例
services:
web:
build: .
ports:
- "5000:5000"
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: example
depends_onを用いることで、起動順が制御される。