0Pricing
Docker & DevOps Fundamentals · บทเรียน

การเขียนไฟล์ 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 เพื่อกำหนดค่าบริการ เครือข่าย และโวลุมของแอปพลิเคชันไว้ในไฟล์เดียว

การเขียนไฟล์ Compose — ภาพประกอบ 1

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Docker Compose คืออะไร
  2. การเขียนไฟล์ Compose
  3. การปรับใช้แอปที่มีหลายบริการ
  4. ตัวแปรสภาพแวดล้อมและไฟล์ .env
← กลับไปที่ Docker & DevOps Fundamentals