การเขียนไฟล์ Compose
เรียนรู้ไวยากรณ์ YAML สำหรับ `docker-compose.yml` เพื่อกำหนดบริการ เครือข่าย และวอลุ่ม
การเขียนไฟล์ Compose เป็นบทเรียน Docker & DevOps Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Docker & DevOps Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Docker & DevOps Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
ไฟล์ Compose: พิมพ์เขียว
ยินดีต้อนรับสู่การเขียนไฟล์ Docker Compose ครับ ไฟล์ docker-compose.yml คือพิมพ์เขียวสำหรับกำหนดและเรียกใช้แอปพลิเคชัน Docker ที่มีหลายคอนเทนเนอร์
ไฟล์นี้ใช้ไวยากรณ์ YAML เพื่อกำหนดค่าบริการ เครือข่าย และโวลุมของแอปพลิเคชันไว้ในไฟล์เดียว

YAML: ทบทวนอย่างรวดเร็ว
ไฟล์ Docker Compose เขียนด้วย YAML (YAML Ain't Markup Language) ซึ่งเป็นมาตรฐานการจัดลำดับข้อมูลที่อ่านเข้าใจได้ง่ายสำหรับมนุษย์
- คู่คีย์-ค่า:
key: value - รายการ: แต่ละรายการเริ่มต้นด้วยยัติภังค์ (
- item) - การเยื้อง: สำคัญอย่างยิ่งต่อการกำหนดโครงสร้างและลำดับชั้น ให้ใช้ช่องว่าง ไม่ใช่แท็บ
คีย์ `version`
ไฟล์ docker-compose.yml ทุกไฟล์จะเริ่มต้นด้วยคีย์ version ซึ่งระบุรุ่นรูปแบบของไฟล์ Compose และช่วยให้ Docker Compose เข้าใจวิธีแปลความหมายไฟล์ของคุณ
สำหรับแอปพลิเคชันสมัยใหม่ส่วนใหญ่ แนะนำให้ใช้ '3.8' หรือรุ่น '3.x' ที่ใกล้เคียงกัน
version: '3.8'กำหนด `services`
ส่วน services คือบริเวณที่คุณกำหนดคอนเทนเนอร์แต่ละตัว (บริการ) ซึ่งประกอบกันเป็นแอปพลิเคชันของคุณ แต่ละบริการแทนองค์ประกอบหนึ่งส่วน เช่น เว็บเซิร์ฟเวอร์หรือฐานข้อมูล
ภายใต้ services ให้ระบุบริการแต่ละรายการด้วยชื่อที่คุณเลือก
version: '3.8'
services:
web:
# Service configuration goes here
database:
# Another service's configuration`image` และ `ports` ของบริการ
ภายในการกำหนดบริการ image ใช้ระบุว่าจะใช้ภาพ Docker ใด (เช่น nginx:latest) ส่วนคีย์ ports ใช้จับคู่พอร์ตของคอนเทนเนอร์กับพอร์ตของโฮสต์ เพื่อให้เข้าถึงจากภายนอกได้
"80:80"จับคู่พอร์ต 80 ของโฮสต์กับพอร์ต 80 ของคอนเทนเนอร์
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"`volumes` ของบริการ
คีย์ volumes ภายในบริการช่วยให้คุณเมานต์เส้นทางจากเครื่องโฮสต์เข้าไปในคอนเทนเนอร์ หรือใช้โวลุมแบบตั้งชื่อสำหรับการจัดเก็บข้อมูลถาวร
ตัวอย่างนี้เมานต์ไดเรกทอรีภายในเครื่อง ./app ไปยัง /usr/src/app ภายในคอนเทนเนอร์
version: '3.8'
services:
app:
image: my-node-app
volumes:
- ./app:/usr/src/appตัวแปร `environment` ของบริการ
ใช้คีย์ environment เพื่อส่งตัวแปรสภาพแวดล้อมไปยังคอนเทนเนอร์ของบริการ วิธีนี้สำคัญอย่างยิ่งสำหรับการตั้งค่าที่อาจเปลี่ยนแปลงไปในแต่ละสภาพแวดล้อม (เช่น สตริงการเชื่อมต่อฐานข้อมูล)
คุณสามารถระบุตัวแปรเป็นคู่คีย์-ค่าหรือในรูปแบบรายการได้
version: '3.8'
services:
backend:
image: my-api
environment:
- DATABASE_URL=postgres://user:pass@host:5432/db
- NODE_ENV=development`networks` และ `volumes` ระดับบนสุด
นอกจากการกำหนดไว้ภายในบริการแล้ว คุณยังสามารถประกาศ วอลุ่มที่มีชื่อ และ เครือข่าย แบบกำหนดเองที่ระดับบนสุดของไฟล์ docker-compose.yml ได้ด้วย
วิธีนี้ช่วยให้การกำหนดค่าการคงอยู่ของข้อมูลและการสื่อสารระหว่างคอนเทนเนอร์เป็นระเบียบและนำกลับมาใช้ซ้ำได้มากขึ้น
version: '3.8'
services:
# ... service definitions ...
networks:
my_app_network:
# custom network configuration
volumes:
db_data:
# named volume configurationรวมทุกอย่างเข้าด้วยกัน
ตัวอย่างขนาดเล็กนี้รวมสิ่งที่เราเรียนรู้มา โดยกำหนดบริการเว็บและบริการฐานข้อมูล พร้อมใช้อิมเมจ พอร์ต และวอลุ่มที่มีชื่อ
โปรดสังเกตว่าการเยื้องบรรทัดช่วยสร้างโครงสร้าง
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- web_content:/usr/share/nginx/html
db:
image: postgres:13
environment:
- POSTGRES_DB=mydb
- POSTGRES_USER=user
- POSTGRES_PASSWORD=secret
volumes:
web_content:
db_data:ตรวจสอบไฟล์ Compose
ส่วนย่อยของ YAML ใดต่อไปนี้กำหนดบริการ Docker Compose ชื่อ 'api' ได้ถูกต้อง โดยใช้อิมเมจ 'myapi:1.0' และเปิดพอร์ต 3000 ของคอนเทนเนอร์ไปยังพอร์ต 8080 ของโฮสต์
ทบทวน: พื้นฐานไฟล์ Compose
ทำได้ดีมาก! คุณได้เรียนรู้พื้นฐานการเขียนไฟล์ docker-compose.yml แล้ว
- ไฟล์เริ่มต้นด้วย
version servicesใช้กำหนดองค์ประกอบของแอปพลิเคชัน- แต่ละบริการใช้อิมเมจ สามารถเปิดเผย
portsใช้volumesเพื่อคงอยู่ของข้อมูล และกำหนดตัวแปรenvironmentได้ networksและvolumesระดับบนสุดช่วยให้กำหนดค่าได้ขั้นสูงยิ่งขึ้น
การทำความเข้าใจโครงสร้าง YAML นี้เป็นกุญแจสำคัญในการจัดการแอปหลายคอนเทนเนอร์!
คำถามที่พบบ่อย
บทเรียน “การเขียนไฟล์ Compose” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเขียนไฟล์ Compose” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Docker & DevOps Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Docker & DevOps Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเขียนไฟล์ Compose”
เรียนรู้ไวยากรณ์ YAML สำหรับ `docker-compose.yml` เพื่อกำหนดบริการ เครือข่าย และวอลุ่ม คุณปฏิบัติ Docker & DevOps Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Docker & DevOps Fundamentals หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Docker & DevOps Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การเขียนไฟล์ Compose” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Docker & DevOps Fundamentals นี้ได้ไหม
ได้ บทเรียน Docker & DevOps Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Docker Compose คืออะไร
- การเขียนไฟล์ Compose
- การปรับใช้แอปที่มีหลายบริการ
- ตัวแปรสภาพแวดล้อมและไฟล์ .env