Docker Compose là gì?
Compose là công cụ giúp định nghĩa và khởi chạy multi-container Docker applications. Trong Compose, chúng ta sử dụng Compose file để cấu hình application’s services. Chỉ với một câu lệnh, lập trình viên có thể dễ dàng create và start toàn bộ các services phục vụ cho việc chạy ứng dụng.

Compose là một công cụ tuyệt với không chỉ dùng cho development, testing, staging environments, mà còn ứng dụng trong CI workflows. Việc sử dụng Docker Compose được tóm lược trong 3 bước cơ bản sau:
Khai báo app’s environment với Dockerfile.
Khai báo các services cần thiết để chạy app trong docker-compose.yml.
Run docker-compose up và Compose sẽ start và run app.
Ví dụ về một file Docker Compose:
docker-compose.yml
version: '1'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
Lưu các file và chạy Docker Compose trên cùng một thư mục: $ docker compose up -d . Lệnh này sẽ chạy db và wordpress container. Giống việc chạy từng container với docker run, cờ -d sẽ chạy các container ở detached mode.
Giải thích cú pháp sử dụng trong file config Docker Compose
File docker-compose.yml được tổ chức gồm 4 phần:
DIRECTIVE Ý NGHĨA
version Chỉ ra version của file Compose
services Với Docker, một service là tên của một container
networks Phần này được sử dụng để cấu hình network cho ứng dụng. Bạn có thể cài đặt network mặc định hoặc định nghĩa network chỉ định cho ứng dụng
volumes Gắn đường dẫn trên host machine được sử dụng trên container
Với phần config services, có một vài directive thường được sử dụng:
DIRECTIVE Ý NGHĨA
image Chỉ ra image được sử dụng để build container. Sử dụng directive với các image chỉ định trên host mechine hoặc trên Docker Hub.
build Directive này có thể được sử dụng thay directive image. Chỉ ra vị trí của Dockerfile để build container
db Ở file Dockercomposer trên ví dụ, db là một biến cho container mà bạn sắp định nghĩa.
restart Yêu cầu container restart khi hệ thống restart
volumes Gắn đường dẫn trên host machine được sử dụng trên container
environment Định nghĩa các biến môi trường truyền vào Docker khi chạy command
depends_on Chọn các service được dùng là dependency cho container được xác định trong service hiện tại.
port Kết nối port từ container đến host theo cách thức host:container
links Liên kết service này với bất kỳ service nào khác trong Docker Compose file bằng các chỉ rõ tên