docker compose の開発環境テンプレート

目次

新しいプロジェクトを始めるときにコピーする雛形。

compose.yaml

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:17
    environment:
      POSTGRES_PASSWORD: dev
    volumes:
      - db-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      retries: 5

volumes:
  db-data:

ポイント

  • depends_oncondition: service_healthy で DB の起動完了を待てる(healthcheck とセットで使う)
  • - /app/node_modules の匿名ボリュームで、ホスト側の node_modules がコンテナを汚染するのを防ぐ
  • データは名前付きボリュームに置き、docker compose down -v で意図的に消すまで保持する

よく使うコマンド

docker compose up -d --build
docker compose logs -f app
docker compose exec db psql -U postgres