docker-composeでEnvを使用する

docker-compose.yaml.envに乗っているキーを使用する。
例えば、.envが以下の時

DATABASE_URL=postgresql://myuser:mypassword@db:3000

composeは以下のようになる。

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      DATABASE_URL: ${DATABASE_URL} //ここ
    depends_on:
      db:
        condition: service_healthy
  db:
    image: postgres:15-alpine
    env_file:
      - .env
    ports:
      - "5432:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U myuser -d pdf_analyzer"]
      interval: 5s
      timeout: 5s
      retries: 5
    networks:
      - app-network
 
networks:
  app-network:
    driver: bridge

環境変数が少ない場合はこれでもいいが、多くなったら以下のようにも書くことができる。

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    env_file: //ここ
      - .env
    depends_on:
      db:
        condition: service_healthy
    networks:
      - app-network
  db:
    image: postgres:15-alpine
    env_file:
      - .env
    ports:
      - "5432:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U myuser -d pdf_analyzer"]
      interval: 5s
      timeout: 5s
      retries: 5
    networks:
      - app-network
 
networks:
  app-network:
    driver: bridge