docker compose...มันคืออะไร
#ติดเทรนด์ #Lemon8ฮาวทู #ป้ายยากับlemon8 #พื้นฐานการเขียนเว็ปไซต์
Docker Compose คือเครื่องมือที่ช่วยให้เราสามารถจัดการ Multi-container Application (โปรเจกต์ที่มีหลายคอนเทนเนอร์ทำงานร่วมกัน) ได้ด้วยการใช้ไฟล์ตั้งค่าเพียงไฟล์เดียวครับ
หากเปรียบเทียบให้เห็นภาพ:
Docker Engine คือ "คนขับรถเครน" ที่ยกตู้คอนเทนเนอร์ทีละตู้
Docker Compose คือ "หัวหน้าผู้ควบคุมงาน (Conductor)" ที่ถือแผนผังและสั่งให้ตู้ทุกลูก (Node.js, Nginx, Database) วางลงในตำแหน่งที่ถูกต้องและเชื่อมต่อกันโดยอัตโนมัติ
Docker Compose ทำหน้าที่อะไรบ้าง?
หน้าที่หลักของมันคือการเปลี่ยนขั้นตอนที่ยุ่งยากให้กลายเป็นเรื่องง่าย ผ่านกระบวนการดังนี้:
1. การกำหนดสเปก (Definition)
แทนที่คุณจะต้องพิมพ์คำสั่งรันยาวๆ ทีละคอนเทนเนอร์ คุณจะเขียนทุกอย่างลงในไฟล์ docker-compose.yml เพียงไฟล์เดียว เช่น:
จะใช้ Image อะไร?
ต้องเปิดพอร์ตไหน?
ต้องเชื่อมต่อกับ Database ตัวไหน?
2. การสั่งการด้วยคำสั่งเดียว (Single Command Orchestration)
เมื่อเตรียมไฟล์เสร็จ คุณใช้คำสั่งเดียวคือ docker compose up แล้ว Docker Compose จะทำหน้าที่:
Build: สร้าง Image ให้ทุก Service ตามที่ระบุ
Create: สร้าง Network จำลองเพื่อให้คอนเทนเนอร์คุยกันได้
Start: เริ่มการทำงานของทุกคอนเทนเนอร์พร้อมกันตามลำดับที่ถูกต้อง
3. การจัดการความสัมพันธ์ (Service Dependencies)
มันสามารถกำหนดได้ว่า "ต้องให้ Database รันให้เสร็จก่อนนะ แล้วค่อยรัน Node.js ตามมา" ผ่านคำสั่ง depends_on เพื่อป้องกันไม่ให้โปรเจกต์พังเพราะแอปฯ หาฐานข้อมูลไม่เจอ
ประโยชน์ที่คุณจะได้รับ (จากโปรเจกต์ mai-app)
ประหยัดเวลา: ไม่ต้องพิมพ์คำสั่ง docker build และ docker run แยกกันหลายๆ รอบ
Infrastructure as Code: ไฟล์ docker-compose.yml เปรียบเสมือนเอกสารประกอบโปรเจกต์ ใครที่ได้ไฟล์นี้ไปจะสามารถรันโปรเจกต์ได้เหมือนคุณเป๊ะๆ
สภาพแวดล้อมที่สะอาด: เมื่อเลิกใช้งาน แค่สั่ง docker compose down ระบบจะเก็บกวาดทังคอนเทนเนอร์และเน็ตเวิร์กที่สร้างขึ้นมาให้เกลี้ยงทันที
สรุป workflow
เขียน Dockerfile ของแต่ละ Service (เช่น Node.js)
เขียน docker-compose.yml เพื่อรวมทุกอย่างเข้าด้วยกัน
รัน docker compose up เพื่อเริ่มระบบทั้งหมด






