Docker Compose


Compose เป็น tool สำหรับ สั่ง Running docker container แบบหลายๆตัว โดยจะเขียน config file เป็นไฟล์ yaml จากเดิม ที่เวลาจะจัดการ container จะใช้เป็น docker run | start | stop | rm เช่นกันกับการสร้าง image ที่จะใช้ docker build โดย ถ้าใช้ Compose config ข้างต้นจะทำถูกกำหนดไว้ในไฟล์ docker-compose.ymal ( Default ) แล้วสั่ง docker-compose up เพื่อทำการ run compose


Docker Compose File

  • Version เป็นการระบุว่าจะใช้รูปแบบCompose file เวอร์ชันไหน

  • Services เป็น การระบุ container ที่เราต้องการจะจัดการ

  • image image จาก Docker Hub registry

  • ports เป็นการทำ port binding ระหว่าง host กับ container

  • build เป็นการ build image จาก docker file ที่เราสร้าง

  • volume เป็นการ mount path ที่เราต้องการเข้ากับ path ใน container

  • network เป็นการ กำหนด network ให้ container


ตัวอย่างการเขียน docker-compose.yaml

# example docker-compose.yaml อย่างง่าย

version: '3'
services:
  nginx:
    image : nginx
    ports:
      - "80:80"
  httpd: 
    image: httpd
    ports:
      - 81:80
$ docker-compose up 

files-1590403748246.png

จาก docker-compose.yaml ข้างต้นเป็นการ สั่งสร้าง container สอง ตัว ( nginx , apache )

หากนำมาเปรียบเทียบกับการใช้ docker run

  • docker-compose
version: '3'
services:
  nginx:
    image : nginx
    ports:
      - "80:80"
  apache: 
    image: httpd
    ports:
      - 81:80
  • docker run
$ docker run -p 80:80 --name nginx nginx
$ docker run -p 81:80 --name httpd apache