Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Ứng dụng thật hiếm khi chỉ có một thành phần: thường là web, database và có thể thêm cache. Khởi động từng container bằng tay rất mệt. Docker Compose cho phép mô tả tất cả trong một file và bật lên bằng một lệnh.
Docker Compose là công cụ định nghĩa và chạy nhiều container bằng file YAML, thường đặt tên compose.yaml hoặc docker-compose.yml. Mỗi dịch vụ (service) là một container, và Compose tự tạo mạng riêng để chúng gọi nhau theo tên.
services:
web:
build: .
ports:
- '3000:3000'
environment:
DATABASE_URL: postgres://app:secret@db:5432/appdb
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: secret
POSTGRES_DB: appdb
volumes:
- dbdata:/var/lib/postgresql/data
volumes:
dbdata:Điểm đáng chú ý:
web được dựng từ Dockerfile ở thư mục hiện tại (build: .).db, chính là tên dịch vụ. Compose tự phân giải tên này.dbdata giữ dữ liệu lại khi container bị xóa và tạo lại..env hoặc secrets.docker compose up -d
docker compose ps
docker compose logs -f web
docker compose exec db psql -U app appdb
docker compose downLệnh up -d dựng và chạy nền mọi dịch vụ. logs -f theo dõi nhật ký trực tiếp. exec chạy lệnh bên trong container đang chạy. down dừng và xóa container cùng mạng; thêm cờ -v nếu muốn xóa luôn volume, nhưng hãy cẩn thận vì dữ liệu sẽ mất.
Mặc định depends_on chỉ đảm bảo thứ tự khởi động, không đợi database nhận kết nối. Cách làm chuẩn là thêm healthcheck cho database rồi cho web chờ trạng thái khỏe:
db:
image: postgres:16
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U app -d appdb']
interval: 5s
timeout: 3s
retries: 10
web:
build: .
depends_on:
db:
condition: service_healthyCompose tự đọc file .env cạnh compose.yaml để thay thế biến dạng ${TEN_BIEN}. Nhờ vậy bạn không phải ghi mật khẩu thẳng vào file cấu hình được đẩy lên Git. Nhớ thêm .env vào .gitignore và cung cấp một file .env.example làm mẫu cho đồng đội.
./src:/app/src) khi phát triển để sửa code thấy ngay kết quả.compose.override.yaml.ports của dịch vụ đó.Compose rất hợp cho môi trường phát triển, kiểm thử tự động và các hệ thống nhỏ trên một máy chủ. Khi hệ thống cần chạy trên nhiều máy với khả năng tự phục hồi và mở rộng, người ta thường chuyển sang các nền tảng điều phối như Kubernetes, nhưng khái niệm bạn học ở Compose vẫn dùng lại được.
Chỉ với một file YAML và lệnh docker compose up, đồng đội mới vào dự án có thể dựng đầy đủ môi trường trong vài phút. Hãy thử gom ứng dụng đang làm của bạn vào Compose ngay hôm nay.
Nếu bạn muốn thực hành Compose cùng các dự án mẫu có hướng dẫn từng bước, hãy ghé qua các khóa học trên codebem.com.
Nguyễn Đình Cường
0 comment