ข้ามไปเนื้อหาหลัก
Docker· ~16 นาที

Docker Compose — รันหลายคอนเทนเนอร์ (+ Lab)

นิยามทั้งระบบ (web + db) ในไฟล์เดียว สั่งขึ้นพร้อมกัน

เปรียบเทียบให้เห็นภาพ

สั่ง docker run ทีละ container เหมือนเปิดเครื่องใช้ไฟฟ้าทีละตัว · Docker Compose เหมือนสวิตช์รวมที่กดครั้งเดียวเปิดทั้งบ้าน — นิยามทุก service (เว็บ, ฐานข้อมูล, cache) ในไฟล์ YAML เดียว แล้วสั่งขึ้นพร้อมกัน

Docker Compose เหมาะกับแอปที่มีหลาย container ทำงานร่วมกัน (เช่น เว็บ + ฐานข้อมูล) · เขียนทุกอย่างใน compose.yaml แล้วจัดการทั้งชุดด้วยคำสั่งเดียว

compose.yaml เดียว = หลาย service ขึ้นพร้อมกัน คุยกันด้วยชื่อ

compose.yamldocker compose up
▼ สร้าง network + volume ให้อัตโนมัติ
webbuild: .
เรียกชื่อ db
dbpostgres
compose.yaml เดียวนิยามหลาย service ที่คุยกันด้วยชื่อ + volume/network ให้อัตโนมัติ

🧪 Lab: เว็บ + ฐานข้อมูลด้วยไฟล์เดียว

services:
  web:
    build: .                 # build จาก Dockerfile ในโฟลเดอร์นี้
    ports:
      - "8080:3000"
    environment:
      DB_HOST: db            # เรียก service "db" ด้วยชื่อได้เลย
    depends_on:
      - db

  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: secret
    volumes:
      - pgdata:/var/lib/postgresql/data   # เก็บข้อมูลถาวร

volumes:
  pgdata:
compose.yaml
docker compose up -d        # สร้าง+รันทั้งชุด (เบื้องหลัง)
docker compose ps           # ดูสถานะทุก service
docker compose logs -f web  # ดู log ของ service web
docker compose down         # หยุด+ลบทั้งชุด (เติม -v = ลบ volume ด้วย)
คำสั่ง Compose ที่ใช้บ่อย

สรุป Key Takeaways

  • Compose นิยามหลาย service ในไฟล์เดียว สั่งขึ้น/ลงทั้งชุดด้วย docker compose up/down
  • service ใน compose เดียวกันคุยกันด้วยชื่อ (network อัตโนมัติ)
  • เหมาะ dev บนเครื่องเดียว — งาน production หลายเครื่องไป Kubernetes
อ่านจบแล้วอย่าลืมทำเครื่องหมาย