📝
Docker Compose

docker-compose.yml Anatomy

Services, Networks, Volumes
💡 docker-compose.yml, EK, "HOUSE, BLUEPRINT" jaisa, hai — "services" section, batata, hai, KAUNSE, ROOMS, (containers) chahiye, "volumes" section, batata, hai, KAHAAN, STORAGE, (almari) rakhni, hai, aur, "networks" section, batata, hai, ki, ROOMS, EK, DOOSRE, se, KAISE, CONNECT, HAIN.

compose, FILE, ke, TEEN, MAIN, TOP-LEVEL, KEYS, hote, HAIN: "services" (HAR, container, ki, DEFINITION, — image/build, ports, environment, volumes, waghera), "volumes" (named, volumes, ki, DEFINITION), aur, "networks" (custom, networks, ki, DEFINITION, agar, DEFAULT, se, ALAG, chahiye).

HAR, service, ke, ANDAR, "image" (existing, image, use, karo) YA, "build" (LOCAL, Dockerfile, se, BUILD, karo) mein, se, EK, hota, hai, PLUS, "ports" "environment" "volumes" "depends_on" jaisi, OPTIONS.

services:
  api:
    build: ./api
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
    volumes:
      - ./api:/app
    depends_on:
      - db

  db:
    image: postgres:16
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:
📝
docker-compose.yml, EK, "HOUSE, BLUEPRINT" jaisa, hai — "services" section, batata, hai, KAUNSE, ROOMS, (containers) chahiye, "volumes" section, batata, hai, KAHAAN, STORAGE, (almari) rakhni, hai, aur, "networks" section, batata, hai, ki, ROOMS, EK, DOOSRE, se, KAISE, CONNECT, HAIN.
1 / 2
⚡ झट से Recap
  • services = har container ki definition (image/build, ports, env, volumes)
  • volumes aur networks top-level keys mein alag se define hote hain
  • depends_on sirf start order control karta hai, readiness nahi
इस page में (2 subtopics)

"build" key, EK, SIMPLE, PATH, (context, directory) ho, sakta hai, YA, EK, DETAILED, OBJECT, ("context" + "dockerfile" + "args") — YE, tab, USEFUL, hai, jab, Dockerfile, ka, NAAM, standard, "Dockerfile" se, DIFFERENT, hai.

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile.prod
      args:
        NODE_VERSION: 20

Compose, mein, VOLUME, mapping, "host_path:container_path" (bind, mount) YA, "volume_name:container_path" (named, volume, jo, top-level, "volumes:" mein, DECLARE, hona, ZAROORI, hai) ho, sakta hai.

services:
  db:
    volumes:
      - ./local-data:/data       # bind mount
      - db-volume:/var/lib/db    # named volume
volumes:
  db-volume: