# A docker-compose.yml Example — Docker Fundamentals: Images, Containers and Compose

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

> Write a docker-compose.yml with an app and a database service that share a network and volume.

## 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:
```
