🌟
Docker Composeについて
Docker Composeの概要
Dockerの様々なコマンドをひとつのファイルに記述し、まとめて実行することができる
複数のコマンドをひとつひとつ入力する手間が省ける
Webサービス構築では、APIサーバやデータベースなどをそれぞれをコンテナとして作成することが一般的である
さらに、カスタムネットワークやストレージ、外部公開のためのポートの紐づけなど、様々な設定が必要である
こういった環境の構築には大量のDockerコマンド入力が必要になり、チーム内での共有も困難
このような状況を解決するのがDocker Composeである
Docker Composeにはdocker-compose.ymlファイルを作成し、コマンドを記述する
docker compose up
でdocker-compose.ymlに記述されたコマンドを実行する
docker-compose.ymlの記述方法
docker-compose.yml
# docker-compose.ymlのバージョン
# よくわからんが不要らしい
# https://github.com/compose-spec/compose-spec/blob/master/04-version-and-name.md
version: '3.9'
services:
# サービス名
api:
# ビルドコンテキストのパス
build: ./api
# ホストとコンテナのポート紐づけ
ports:
- 8080:8080
# サービス間の依存関係
# 起動の順番を制御する
depends_on:
- db
db:
# dockerHubのイメージを指定する
image: postgres:15
ports:
- 5432:5432
# 環境変数
environment:
- POSTGRES_PASSWORD=mypassword
- POSTGRES_USER=postgres
- POSTGRES_DB=appdb
# ストレージ
volumes:
# ボリュームを指定
- db-storage:/var/lib/postgresql/data
# バインドマウント
- ./db/initdb:/docker-entrypoint-initdb.d
# ボリューム領域を宣言
volumes:
db-storage:
docker-compose.ymlを作成してdocker compose up
docker compose up のオプション
サービス名を指定する
docker compose up <SERVICENAME>
デタッチドモード
docker compose up <SERVICENAME> -d
composeでexecができる
docker compose exec <SERVICENAME> <コマンド>
一括で終了
ボリュームは消えない
docker compose down
イメージを作り直す場合
--build オプション
docker compose up --build
Discussion