Docker Compose เป็นเครื่องมือที่ทรงพลังและเป็นที่นิยมใช้สำหรับจัดการและปรับใช้แอปพลิเคชันตาม Docker. ช่วยให้คุณกำหนด กำหนดค่า และเรียกใช้ Docker คอนเทนเนอร์หลายรายการเป็นโครงการเดียว ลดความซับซ้อนในการปรับใช้แอปพลิเคชันและรับประกันความสอดคล้องระหว่างสภาพแวดล้อมการพัฒนาและการใช้งานจริง
ด้านล่างนี้คือแนวคิดและตัวอย่างของ Docker Compose:
กำหนดโครงการโดยใช้ไฟล์ docker-compose.yml
ใน docker-compose.yml
ไฟล์ คุณสามารถกำหนดบริการที่จำเป็นสำหรับแอปพลิเคชันของคุณ ตัวอย่างเช่น หากต้องการปรับใช้เว็บแอปพลิเคชัน PHP กับฐานข้อมูล MySQL คุณสามารถกำหนดบริการได้สองอย่างดังนี้:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "80:80"
volumes:
- ./app:/var/www/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: my_database
ในข้อมูลโค้ดข้างต้น เรากำหนดบริการสองรายการ: web
และ db
บริการ web
จะใช้ PHP 7.4 image กับ Apache ฟังพอร์ต 80 และเมานต์ ./app
ไดเร็กทอรีจากโฮสต์ไปยัง /var/www/html
ไดเร็กทอรีในไฟล์ container. บริการ db
จะใช้ MySQL 5.7 image และตั้งค่าตัวแปรสภาพแวดล้อมบางอย่างที่จำเป็นสำหรับฐานข้อมูล
โดยใช้ Docker Compose คำสั่ง
เมื่อคุณกำหนดโครงการใน docker-compose.yml
ไฟล์แล้ว คุณสามารถใช้ Docker Compose คำสั่งเพื่อจัดการบริการได้
-
เริ่มโครงการ:
docker-compose up
คำสั่งนี้จะเริ่มคอนเทนเนอร์สำหรับบริการที่กำหนดไว้ใน
docker-compose.yml
ไฟล์ -
หยุดและนำคอนเทนเนอร์ออก:
docker-compose down
คำสั่งนี้หยุดและลบคอนเทนเนอร์ทั้งหมดที่เกี่ยวข้องกับโปรเจ็กต์
-
แสดงรายการคอนเทนเนอร์ที่กำลังทำงานอยู่:
docker-compose ps
คำสั่งนี้จะแสดงสถานะของคอนเทนเนอร์ในโครงการ
-
ดูบันทึกการบริการ:
docker-compose logs
คำสั่งนี้แสดงบันทึกของบริการในโครงการ
ตัวแปรสภาพแวดล้อมและการปรับแต่ง
Docker Compose อนุญาตให้คุณใช้ตัวแปรสภาพแวดล้อมเพื่อปรับแต่งการกำหนดค่าสำหรับสภาพแวดล้อมต่างๆ เช่น การพัฒนาและการผลิต คุณสามารถใช้ตัวแปรสภาพแวดล้อมใน docker-compose.yml
ไฟล์และกำหนดค่าใน .env
ไฟล์ ที่เกี่ยวข้อง
ตัวอย่างเช่น หากคุณต้องการกำหนดตัวแปรสภาพแวดล้อมสำหรับพอร์ตของบริการ web
คุณสามารถเพิ่มบรรทัดใน .env
ไฟล์ได้ดังนี้:
WEB_PORT=8080
จากนั้นใน docker-compose.yml
ไฟล์ คุณสามารถใช้ตัวแปรสภาพแวดล้อมได้ดังนี้:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "${WEB_PORT}:80"
volumes:
- ./app:/var/www/html
เมื่อรัน docker-compose up
คำสั่ง web
บริการจะฟังที่พอร์ต 8080 แทนพอร์ต 80
การผสานรวมกับ Docker Swam
หากคุณต้องการปรับใช้แอปพลิเคชันของคุณในสภาพแวดล้อมแบบกระจายที่มีหลายโหนด คุณ สามารถ Docker Compose รวมเข้ากับ Docker Swarm สิ่งนี้ทำให้คุณสามารถจัดการบริการในหลาย ๆ โหนดใน Docker คลัสเตอร์
หากต้องการใช้การผสานรวมนี้ คุณเพียงแค่ต้องเพิ่ม --orchestrate
หรือ --with-registry-auth
ตัวเลือกเมื่อเรียกใช้ docker stack deploy
หรือ docker-compose up
คำสั่งใน Swarm สภาพแวดล้อม
Docker Compose เป็นเครื่องมือที่มีประโยชน์สำหรับการพัฒนา การทดสอบ และการปรับใช้แอปพลิเคชันที่ง่ายและมีประสิทธิภาพ ช่วยลดความแตกต่างระหว่างสภาพแวดล้อมการพัฒนาและการผลิต รับรองความสม่ำเสมอในกระบวนการพัฒนาซอฟต์แวร์ และเพิ่มประสิทธิภาพการทำงานของทีมพัฒนา