Intro to Docker Compose
ในบทความ แนะนำ Docker ได้เกริ่นถึง Docker Orchestration Tool ไว้ Docker Compose ก็เป็นหนึ่งใน tool เหล่านั้น และถือเป็น orchestration tool พื้นฐานที่มากับ Docker Engine เลย
ตัวอย่าง compose file
version: "2"
services:
db:
image: mysql:5.7
volumes:
- "~/db:/var/lib/mysql"
environments:
MYSQL_ROOT_PASSWORD: dummy
web:
image: samrit/webapp
ports:
- "8888:80"
link:
- db:database
Docker compose เป็น spec อธิบายถึง runtime environment ที่เราต้องการ สามารถเขียนเป็นไฟล์ JSON หรือ YAML ก็ได้
ตัวอย่าง config ที่เขียนด้วย JSON file:
{
"version": "2",
"services": {
"db": {
"image": "mysql:5.7",
"volumes": [ "~/db:/var/lib/mysql" ],
"environments": {
"MYSQL_ROOT_PASSWORD": "dummy"
}
},
"web": {
"image": "samrit/webapp",
"ports": [ "8888:80" ],
"link": [ "db:database" ]
}
}
}
จากตัวอย่างข้างบน
- version เป็น version ของ docker compose file. ปัจจุบันเป็น version 2
- services เป็นส่วนที่อธิบายจำนวน service (container) ที่ต้องการ ในที่นี้มีสองตัวคือ
db
และweb
- image เป็น Docker Image เพื่อใช้สร้าง Container โดยปกติจะโหลดมาจาก Docker Hub
- volumes เป็นการระบุ mapping ระหว่าง host path กับ container path
- environments เป็นตัวแปร environment ที่ต้องการเซตไว้ใน container เมื่อ container เริ่มทำงาน
- ports ใช้ระบุ port mapping ระหว่าง host port กับ container port
- link ระบุ dependency ของแต่ละ service โดยที่ dependency นี้จะเป็น host alias ด้วย
Settings อื่นๆสามารถดูเพิ่มเติมได้ใน https://docs.docker.com/compose/compose-file/
ใช้งาน Docker Compose
การใช้งานทำผ่าน Command line ชื่อ docker-compose
เช่น
docker-compose up # start services
docker-compose down # remove services
# or
docker-compose stop # stop all services but not remove them.
โดยปกติชื่อ docker compose file คือ docker-compose.yml
หรือ docker-compose.json