Basic docker-compose.yml

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: password

Essential Commands

docker compose up -d
docker compose down
docker compose ps
docker compose logs -f
docker compose exec web bash

Persist Data with Volumes

services:
  db:
    image: mysql:8
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

Key Points

  • docker compose down -v also removes volumes — use with caution
  • Use named volumes for data you want to keep