ตัวสร้าง Docker Compose

อะไรที่รันอยู่ในสแตกนี้

ถัดไป

การเขียน docker-compose.yml ด้วยมือหมายถึงต้องจำการย่อหน้าที่แม่นยำ ใส่เครื่องหมายคำพูดรอบการจับคู่พอร์ตทุกครั้ง และรู้ว่าบรรทัดเวอร์ชันใดที่โปรแกรม Compose ของคุณเข้าใจ เครื่องมือนี้ให้คุณนิยาม services ผ่านฟิลด์ง่ายๆ ได้แก่ ชื่อ image การจับคู่พอร์ต host:container และ volume แล้วส่งออกไฟล์ YAML ที่ถูกต้องตามสเปก Compose สมัยใหม่ (ไม่มีคีย์ version) พร้อมค่าเริ่มต้นที่สมเหตุสมผล

วิธีสร้างไฟล์ Compose

  1. 1

    เพิ่ม services

    ตั้งชื่อและเลือกอิมเมจให้แต่ละเซอร์วิส จากนั้นกำหนดการแมปพอร์ต วอลุ่ม ตัวแปรสภาพแวดล้อม และนโยบายการรีสตาร์ต มีเซอร์วิสตั้งต้นสองรายการกรอกไว้ให้แล้ว และรันได้เลยตามที่เป็นอยู่

  2. 2

    แก้ไขหรือลบรายการ

    แก้ไขฟิลด์ใดก็ได้โดยตรง เพิ่ม service อื่นด้วยปุ่ม + Service หรือลบรายการที่ไม่ต้องการ

  3. 3

    ตรวจสอบ YAML ที่สร้าง

    ตรวจไฟล์ YAML ที่ได้ การแมปพอร์ตจะอยู่ในเครื่องหมายคำพูด วอลุ่มแบบตั้งชื่อทุกตัวถูกประกาศไว้ท้ายไฟล์ และไม่มีคีย์ version ตามที่ข้อกำหนด Compose รุ่นใหม่คาดหวัง

  4. 4

    คัดลอกไฟล์

    คัดลอก docker-compose.yml ที่สร้างแล้ววางลงในโฟลเดอร์รากของโปรเจกต์

สเปก Compose สมัยใหม่

Compose V2 (ปลั๊กอินที่มาพร้อมกับ Docker Desktop และ Docker Engine สมัยใหม่) เป็นไปตาม Compose Specification คีย์ version: เลิกใช้แล้ว เครื่องมือนี้จึงละเว้นไว้ คีย์ระดับบนสุดคือ services networks volumes configs และ secrets

โครงสร้างของ service

service ที่ใกล้เคียงระดับโปรดักชันมีหน้าตาแบบนี้:

services:
  web:
    image: nginx:1.27-alpine
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./public:/usr/share/nginx/html:ro
    depends_on:
      app:
        condition: service_healthy
    networks:
      - frontend
      - backend
    healthcheck:
      test: ["CMD", "wget", "--spider", "-q", "http://localhost/health"]
      interval: 30s
      timeout: 5s
      retries: 3

Volume: bind mount กับ named volume

  • Bind mount (./app:/var/www) เชื่อมคอนเทนเนอร์กับเส้นทางบนเครื่องโฮสต์ เหมาะกับการพัฒนาในเครื่องเพราะการเปลี่ยนแปลงแสดงผลทันที
  • Named volume (pgdata:/var/lib/postgresql/data) จัดการโดย Docker และคงอยู่โดยไม่ขึ้นกับเส้นทางใดๆ บนโฮสต์ เหมาะกับฐานข้อมูลและข้อมูลที่ไม่อยากลบพลาดด้วย rm -rf
  • Anonymous volume - หลีกเลี่ยง แม้จะอยู่ข้ามการรีสตาร์ต แต่จะหายไปโดยไม่มีการเตือนเมื่อรัน docker compose down -v

เครือข่าย

ตามค่าเริ่มต้น Compose จะสร้างเครือข่ายตามชื่อโปรเจกต์และเชื่อมทุก service เข้าไว้ การประกาศเครือข่ายอย่างชัดเจนมีประโยชน์เมื่อ:

  • ต้องการแยกฐานข้อมูลออกจาก service ที่เปิดสู่สาธารณะ
  • ต้องใช้ bridge ที่มี subnet กำหนดเองเพื่อให้สอดคล้องกับโครงสร้างพื้นฐานเดิม
  • ต้องการเชื่อมคอนเทนเนอร์เข้ากับเครือข่ายภายนอกที่มีอยู่แล้ว (external: true)

ข้อผิดพลาดทั่วไปที่ควรหลีกเลี่ยง

  • คีย์ version ขัดแย้ง การใส่ version: "3.8" ไว้ด้านบนทำให้ฟีเจอร์ใหม่ๆ เช่น start_interval ของ healthcheck ใช้ไม่ได้กับ Compose รุ่นเก่า เครื่องมือนี้จึงละเว้นคีย์ version
  • เครื่องหมายคำพูดของพอร์ต 8080:80 ในบางกรณีจะถูกอ่านเป็นเลขฐาน 60 ของ YAML ควรใส่เครื่องหมายคำพูดรอบการจับคู่พอร์ตเสมอ ซึ่งเครื่องมือนี้ทำให้แล้ว
  • secret เขียนตายตัว secret ที่เขียนลงใน compose.yml โดยตรงจะถูก commit ขึ้น git ควรเก็บใน env_file หรือตัวเก็บ secret ของแพลตฟอร์ม
  • depends_on ที่ไม่มีเงื่อนไข การใช้ depends_on: [db] ธรรมดาจะรอแค่คอนเทนเนอร์เริ่มทำงาน ไม่ใช่รอให้ service พร้อม ควรใช้ condition: service_healthy และเพิ่ม healthcheck ให้กับ service ที่พึ่งพา

คำถามที่พบบ่อย

Compose Specification ปัจจุบัน (สอดคล้องกับ Docker Compose V2) ไฟล์ละเว้นคีย์ version: ซึ่งเป็นวิธีเขียนไฟล์ Compose สมัยใหม่ ใช้งานได้กับ Docker Compose V2.22 ขึ้นไป

ผ่านฟอร์มยังไม่ได้ ฟอร์มครอบคลุมอิมเมจ พอร์ต วอลุ่ม ตัวแปรสภาพแวดล้อม และนโยบายการรีสตาร์ต พร้อมประกาศวอลุ่มแบบตั้งชื่อทุกตัวที่เซอร์วิสเมาท์ไว้ตามที่ Compose ต้องการ ส่วนเน็ตเวิร์กและ health check ให้เพิ่มลงในไฟล์ YAML ที่ได้ด้วยตัวเอง

ไม่ เครื่องมือนี้เน้นที่ compose.yml สำหรับ Dockerfile ใช้เครื่องสร้าง Dockerfile ซึ่งจัดการเรื่องการเลือก image พื้นฐานและลำดับ COPY/RUN สำหรับห้าเทคโนโลยี

ไม่ คำนิยามของ services ใช้เพื่อสร้าง YAML ในหน้านี้เท่านั้น ไม่มีการเก็บ อัปโหลด หรือแชร์

เครื่องมือที่เกี่ยวข้อง

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

เครื่องสุ่มที่อยู่

สร้างระเบียนคล้ายที่อยู่ 1–20 รายการสำหรับแบบจำลองและการทดสอบ ด้วยรูปแบบประเทศแบบย่อ

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

ตัวสร้างลูกศร CSS

สร้างลูกศร CSS ในเบราว์เซอร์ด้วยทิศทาง สี ขนาด และความหนาของเส้นขอบ แล้วคัดลอกกฎ.

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องมือนี้มีให้บริการในภาษาอื่น