0Pricing
DevOps Bootcamp · บทเรียน

ตัวแปรสภาพแวดล้อมและไฟล์ .env

กำหนดค่าบริการ Compose อย่างเป็นระเบียบด้วยตัวแปรสภาพแวดล้อม การแทนค่าตัวแปร และไฟล์ .env เพื่อให้ไฟล์ Compose เดียวใช้งานได้ทั้งในสภาพแวดล้อมพัฒนา เตรียมใช้งาน และระบบจริง

ตัวแปรสภาพแวดล้อมและไฟล์ .env เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงต้องแยกการกำหนดค่าออกมา

การฝังรหัสผ่านและพอร์ตไว้ในไฟล์ Compose โดยตรงทำให้การกำหนดค่าเปราะบางและไม่ปลอดภัย ตัวแปรสภาพแวดล้อม ช่วยให้คุณเปลี่ยนพฤติกรรมตามสภาพแวดล้อมได้โดยไม่ต้องแก้ไข YAML

  • เก็บข้อมูลลับไว้นอกระบบควบคุมเวอร์ชัน
  • ใช้ไฟล์ Compose เดียวซ้ำได้ทุกที่
  • แทนที่ค่าเมื่อเริ่มทำงาน

คีย์ environment

ภายในบริการ ให้ประกาศตัวแปรไว้ใต้ environment ในรูปแบบแผนที่ ตัวแปรเหล่านี้จะถูกส่งเข้าไปในคอนเทนเนอร์เมื่อเริ่มทำงาน

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: secret

รูปแบบรายการ

คีย์เดียวกันนี้ยังรับรายการสตริงรูปแบบ KEY=VALUE ได้ด้วย เลือกรูปแบบที่คุณอ่านเข้าใจได้ง่ายกว่า

services:
  db:
    image: postgres:16
    environment:
      - POSTGRES_USER=app
      - POSTGRES_PASSWORD=secret

ไฟล์ .env

Compose จะอ่านไฟล์ชื่อ .env ในไดเรกทอรีโครงการโดยอัตโนมัติ กำหนดค่าไว้ที่นั่นเพียงครั้งเดียว แล้วอ้างอิงค่าด้วยการแทนที่ ${VAR}

# .env
PG_USER=app
PG_PASS=secret
WEB_PORT=8080

การแทนที่ตัวแปร

ใช้ ${VAR} ได้ทุกที่ในไฟล์ Compose Compose จะแทนที่ด้วยค่าจาก .env หรือจากเชลล์ก่อนการแยกวิเคราะห์

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_USER: ${PG_USER}
      POSTGRES_PASSWORD: ${PG_PASS}

ค่าเริ่มต้น

ระบุค่าทดแทนด้วย ${VAR:-default} หากตัวแปรไม่ได้กำหนดค่าหรือเป็นค่าว่าง ระบบจะใช้ค่าเริ่มต้น ทำให้ชุดบริการทำงานได้โดยไม่ต้องมีไฟล์ .env ที่ครบถ้วน

ports:
  - "${WEB_PORT:-80}:80"

ตัวแปรที่จำเป็น

ใช้ ${VAR:?message} เพื่อกำหนดให้ตัวแปรเป็นสิ่งจำเป็น Compose จะยุติการทำงานพร้อมข้อความของคุณหากไม่พบตัวแปรดังกล่าว ช่วยตรวจพบการกำหนดค่าผิดพลาดได้ตั้งแต่เนิ่น ๆ

environment:
  API_KEY: ${API_KEY:?API_KEY must be set}

คำสั่ง env_file

หากต้องการส่งตัวแปรทั้งไฟล์เข้าไปในคอนเทนเนอร์โดยตรง (ไม่ใช่เพียงใช้แทนที่ค่า) ให้ใช้ env_file แต่ละบรรทัดจะกลายเป็นตัวแปรสภาพแวดล้อมของคอนเทนเนอร์

services:
  api:
    image: myapi:1.0
    env_file:
      - api.env

กฎลำดับความสำคัญ

เมื่อกำหนดตัวแปรไว้หลายแห่ง Compose จะใช้ลำดับความสำคัญ โดยสภาพแวดล้อมของเชลล์มีลำดับเหนือ .env และรายการ environment: ที่ระบุไว้อย่างชัดเจนมีลำดับเหนือ env_file

  • เชลล์ / CLI -e มีลำดับสูงสุด
  • ถัดมาคือ environment:
  • จากนั้นคือ env_file
  • สุดท้ายคือค่าเริ่มต้นจากอิมเมจ

ตรวจสอบค่าที่คลี่คลายแล้ว

เรียกใช้ docker compose config เพื่อแสดงไฟล์ Compose ที่คลี่คลายครบถ้วนพร้อมใช้การแทนค่าทั้งหมด เหมาะอย่างยิ่งสำหรับตรวจสอบสิ่งที่จะทำงานจริง

docker compose config

เก็บข้อมูลลับให้ห่างจาก Git

คอมมิต .env.example ที่มีค่าตัวแทน และเพิ่ม .env จริงลงใน .gitignore สำหรับข้อมูลลับในสภาพแวดล้อมจริง ควรเลือกใช้ Docker secrets แทนตัวแปรสภาพแวดล้อม

# .gitignore
.env

ตรวจสอบอย่างรวดเร็ว

ค่าเริ่มต้นทำงานอย่างไรในการแทนค่า

สรุป

ตอนนี้คุณสามารถกำหนดค่า Compose ด้วยข้อมูลสภาพแวดล้อมได้อย่างเป็นระเบียบแล้ว:

  • environment: แทรกตัวแปรให้แต่ละบริการ
  • ไฟล์ .env ป้อนค่าให้การแทนค่า ${VAR}
  • :- ให้ค่าเริ่มต้น ส่วน :? ระบุค่าที่จำเป็น
  • docker compose config แสดงผลลัพธ์ที่คลี่คลายแล้ว

ทำให้ไฟล์ Compose เดียวใช้งานได้ในทุกสภาพแวดล้อม

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

บทเรียน “ตัวแปรสภาพแวดล้อมและไฟล์ .env” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ตัวแปรสภาพแวดล้อมและไฟล์ .env” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ตัวแปรสภาพแวดล้อมและไฟล์ .env”

กำหนดค่าบริการ Compose อย่างเป็นระเบียบด้วยตัวแปรสภาพแวดล้อม การแทนค่าตัวแปร และไฟล์ .env เพื่อให้ไฟล์ Compose เดียวใช้งานได้ทั้งในสภาพแวดล้อมพัฒนา เตรียมใช้งาน และระบบจริง คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “ตัวแปรสภาพแวดล้อมและไฟล์ .env” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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