🌟

Docker Composeについて

2023/07/28に公開

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