# A docker-compose.yml Example — Docker

Source: https://www.geekswithgeeks.com/en/docker/docker-compose-yml

> Define an app service and a database service that talk to each other.

## app + database

Each top-level key under `services` becomes a container. Compose automatically creates a shared network so `app` can reach `db` by name.

```yaml
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DB_HOST=db
    depends_on:
      - db

  db:
    image: postgres:16
    environment:
      - POSTGRES_PASSWORD=secret
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:
```
