Docker Compose: พื้นฐานและการใช้งาน

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 เป็นเครื่องมือที่มีประโยชน์สำหรับการพัฒนา การทดสอบ และการปรับใช้แอปพลิเคชันที่ง่ายและมีประสิทธิภาพ ช่วยลดความแตกต่างระหว่างสภาพแวดล้อมการพัฒนาและการผลิต รับรองความสม่ำเสมอในกระบวนการพัฒนาซอฟต์แวร์ และเพิ่มประสิทธิภาพการทำงานของทีมพัฒนา