ตัวสร้าง Docker Compose

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

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

  1. 1

    เพิ่ม services

    ระบุชื่อ image การจับคู่พอร์ต host:container และ volume สำหรับแต่ละ service ระบบมี service ตัวอย่างสองรายการให้แล้ว

  2. 2

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

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

  3. 3

    ตรวจสอบ 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 ขึ้นไป

ในเวอร์ชันนี้ยังไม่ได้ผ่านฟอร์ม เครื่องมือเน้นนิยาม service ด้วย image พอร์ต และ volume คุณสามารถเพิ่มเครือข่าย ตัวแปรสภาพแวดล้อม healthcheck และคีย์อื่นๆ ลงใน YAML ที่สร้างด้วยมือก่อนนำไปใช้ได้

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

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

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

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

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

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

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

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

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

เครื่องสร้างตัวอักษรสุ่ม

สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน

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

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

เครื่องมือตรวจสอบหมายเลขโทรศัพท์

ตรวจสอบโครงสร้างหมายเลขตามประเทศ พร้อมดูภูมิภาค ประเภท และรูปแบบ E.164 ระหว่างประเทศ ในประเทศ และ RFC 3966

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