Công cụ tạo Docker Compose
Tạo docker-compose.yml hợp lệ từ biểu mẫu: dịch vụ, image, cổng, biến môi trường, volume, depends_on và chính sách khởi động lại, có sẵn mẫu PostgreSQL, MySQL, Redis.
Tuân theo Compose Specification hiện hành (không có khóa "version:"). Volume có tên được khai báo tự động. Hãy đổi mật khẩu mẫu trước khi dùng.
Công cụ Liên quan
Xem Tất cảTạo Docker Compose là gì?
Dựng file docker-compose.yml cho hệ thống nhiều container mà không phải vật lộn với thụt lề YAML. Thêm dịch vụ từ các mẫu có sẵn (PostgreSQL, MySQL, Redis, MongoDB, Nginx, ứng dụng của bạn) hoặc bắt đầu trống, rồi điền image hoặc build context, cổng, biến môi trường, volume, phụ thuộc, chính sách khởi động lại và lệnh. YAML cập nhật khi bạn gõ và lỗi được giải thích rõ.
Cách sử dụng Tạo Docker Compose
- Sửa các dịch vụ ví dụ hoặc dùng Thêm dịch vụ để chèn một mẫu có sẵn.
- Với mỗi dịch vụ, đặt Image (hoặc Build context), Cổng, Biến môi trường, Volume, Phụ thuộc vào và Chính sách khởi động lại.
- Sửa các vấn đề được liệt kê màu đỏ (tên, cổng, biến hoặc phụ thuộc không hợp lệ).
- Tải docker-compose.yml về và chạy
docker compose up -d.
Ví dụ
Service app (build ., port 3000, NODE_ENV=production, depends on db) + PostgreSQL preset
services:
app:
build: .
restart: unless-stopped
ports:
- "3000:3000"
environment:
NODE_ENV: production
depends_on:
- db
db:
image: postgres:16-alpine
restart: unless-stopped
ports:
- "5432:5432"
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: change-me
POSTGRES_DB: app
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata: {} Khi nào nên dùng Tạo Docker Compose
Dùng để dựng stack phát triển cục bộ, demo và triển khai đơn giản trên một máy. Với production, bạn thường sẽ tự thêm health check, giới hạn tài nguyên, secret và network, hoặc dùng một orchestrator như Kubernetes. Hãy thay mật khẩu ví dụ trong các mẫu trước khi dùng ở bất cứ đâu.
Tạo Docker Compose hoạt động như thế nào
Biểu mẫu được chuyển thành object theo Compose Specification hiện hành (không có khóa version: đã lỗi thời) và tuần tự hóa sang YAML bằng js-yaml. Ánh xạ cổng được đặt trong nháy, vì giá trị không có nháy như 22:22 có thể bị parser YAML 1.1 đọc thành số cơ số 60. Các dòng biến môi trường KEY=value trở thành một mapping, và mọi volume có nguồn là tên thay vì đường dẫn (ví dụ pgdata:/var/lib/postgresql/data) được tự động khai báo dưới khóa volumes: cấp cao nhất. Tên dịch vụ, định dạng cổng, cú pháp KEY=value và đích của depends_on đều được kiểm tra.
Các Trường Hợp Sử Dụng Phổ Biến
- Chạy ứng dụng cùng PostgreSQL và Redis trên máy cục bộ
- Chia sẻ môi trường phát triển có thể tái lập với cả nhóm
- Tạo file compose cho một công cụ tự host
- Học cú pháp Compose qua ví dụ
Lưu Ý Bảo Mật
Công khai cổng cơ sở dữ liệu (ví dụ 5432:5432) sẽ mở chúng trên mọi giao diện mạng của máy chủ. Trên server, hãy bỏ ánh xạ cổng hoặc bind vào 127.0.0.1, và dùng mật khẩu mạnh hoặc secret.
Câu Hỏi Thường Gặp
Vì sao không có dòng version:?
Khóa version đã lỗi thời trong Compose Specification mà Docker Compose v2 sử dụng; các phiên bản hiện tại bỏ qua nó và in ra cảnh báo.
depends_on có đợi đến khi cơ sở dữ liệu sẵn sàng không?
Không, nó chỉ điều khiển thứ tự khởi động. Hãy thêm healthcheck và condition: service_healthy, hoặc thử kết nối lại trong ứng dụng.
Named volume và bind mount khác nhau thế nào?
Named volume (pgdata:/path) do Docker quản lý và vẫn còn khi container được tạo lại; bind mount (./data:/path) ánh xạ một thư mục từ máy của bạn.