ตัวแปรสภาพแวดล้อมและไฟล์ .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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Docker Compose คืออะไร
- การเขียนไฟล์ Compose
- การปรับใช้แอปที่มีหลายบริการ
- ตัวแปรสภาพแวดล้อมและไฟล์ .env