• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

docker compose

date: 2026-01-25 excerpt: docker composeの使い方

tag: containerdockercompose


docker compose

概要

  • Docker Compose v2の使い方をまとめる
  • 実行は docker compose を使う
  • 既定のファイル名は compose.yaml

Debianへのインストール

  • Dockerが入っていれば docker compose は不要なことが多い
  • まずは次で確認する
$ docker compose version
  • 無い場合はプラグインを追加する
$ sudo apt update
$ sudo apt install docker-compose-plugin
$ docker compose version

最小のcompose.yaml

services:
  app:
    image: nginx:alpine
    ports:
      - "8080:80"

起動と停止

# 起動
$ docker compose up

# バックグラウンド起動
$ docker compose up -d

# ビルドして起動
$ docker compose up --build

# 停止と削除
$ docker compose down

よく使うコマンド

# コンテナ一覧
$ docker compose ps

# ログの追従
$ docker compose logs -f

# 再ビルドして起動
$ docker compose up -d --build

# イメージ取得
$ docker compose pull

# シェルに入る
$ docker compose exec app sh

# debugでbashに入る
$ docker compose exec -it app bash

# 一度だけコマンドを実行
$ docker compose run --rm app echo hello

環境変数と.env

  • 変数は compose.yaml 内で展開できる
  • ルートに .env を置くと自動で読み込まれる
services:
  app:
    image: "${APP_IMAGE}"
    environment:
      - TZ=Asia/Tokyo
    env_file:
      - .env.local

複数ファイル

  • 環境ごとに上書きする時に便利
$ docker compose -f compose.yaml -f compose.prod.yaml up -d

profiles

  • 起動対象を切り替える
services:
  db:
    image: postgres:16
    profiles: ["dev"]
$ docker compose --profile dev up -d

depends_on と healthcheck

  • 起動順の管理は depends_on を使う
  • サービスの準備待ちは healthcheck と組み合わせる
services:
  api:
    image: ghcr.io/example/api:latest
    depends_on:
      db:
        condition: service_healthy
  db:
    image: postgres:16
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 3s
      retries: 10

設定の確認

# 展開後の設定を確認
$ docker compose config

# 起動中のプロジェクト一覧
$ docker compose ls


containerdockercompose Share Tweet