Docker Compose ออกรุ่นใหม่และมีการเปลี่ยนแปลงรูปแบบของ docker compose file เป็นเวอร์ชั่นใหม่ ซึ่งรองรับ service, volume และ network ตามความสามารถใหม่ของ Docker 1.10 ด้วย file format แบบใหม่ทำให้เราสามารถกำหนดการตั้งค่าต่างๆ ใน docker compose file ได้มากขึ้น แต่การเปลี่ยนแปลงก็มีเช่นกัน

Docker Compose file v2 จะมี key ชื่อ version: ‘2’ เพิ่มเข้ามา สำหรับ container ที่ต้องการสร้างจะอยู่ภายใต้ services การ link container แบบเดิมที่ใช้ link จะถูกเปลี่ยนมาใช้ Docker network แทน สำหรับ network, volume ก็มีสามารถกำหนดค่าได้เช่นกัน
ลอง deploy WordPress และ MySQL โดยใช้ Docker Compose กันก่อน ให้สร้างไฟล์ docker-compose.yml ดังนี้
version: '2'
services:
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=mypass
wp:
image: wordpress
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_PASSWORD=mypass
ports:
- 80:80
view rawdocker-compose.yml hosted with ❤ by GitHub
จากนั้นสั่ง docker-compose up ได้เลยดังนี้
docker-compose up
ลองดูรายละเอียดกันเราจะพบว่า Docker สร้าง bridge ขึ้นมาใหม่ 1 ตัว
ลองดูในส่วน network จะมีข้อมูลดังนี้
แสดงว่าหากไม่กำหนดชนิดของ network Docker จะสร้าง network เป็น Bridge ขึ้นมารองรับ stack นั้นๆ ให้อัตโนมัติ มาลองใช้ volume กันบ้าง
version: '2'
services:
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=mypass
volumes:
- db-data:/var/log/mysql
wp:
image: wordpress
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_PASSWORD=mypass
volumes:
- wp-data:/var/www/html
ports:
- 80:80
volumes:
db-data:
driver: local
wp-data:
driver: local
view rawdocker-compose.yml hosted with ❤ by GitHub
ให้ wordpress และ mysql จะผูกอยู่กับ Docker volume คนละตัวคือ wp-data และ db-data ลองสั่ง docker-compose up ได้เลย
ลองดู volume สักหน่อย
ลอง inspect volume ดูจะได้ดังนี้
ส่วน network จะเป็น default อยู่
มาลองกำหนด isolate network สำหรับ mysql กัน
version: '2'
services:
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=mypass
volumes:
- db-data:/var/log/mysql
networks:
- back-tier
wp:
image: wordpress
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_PASSWORD=mypass
volumes:
- wp-data:/var/www/html
networks:
- back-tier
ports:
- 80:80
volumes:
db-data:
driver: local
wp-data:
driver: local
networks:
back-tier:
driver: bridge
view rawdocker-compose.yml hosted with ❤ by GitHub
ลองสั่ง docker-compose up ได้เลย ลองมาดูที่ network เราจะพบว่ามี network ชื่อ back-tier เพิ่มเข้ามา
และ container ใช้ network นี้