❤️ AZDIGI chính thức cập nhật hệ thống blog mới hoàn chỉnh. Tuy nhiên có thể một số bài viết bị sai lệch hình ảnh, hãy ấn nút Báo cáo bài viết ở cuối bài để AZDIGI cập nhật trong thời gian nhanh nhất. Chân thành cám ơn.
Khi ứng dụng cần nhiều services chạy cùng nhau (app + database + cache + queue worker), Docker Compose là giải pháp. Coolify hỗ trợ deploy Docker Compose trực tiếp, paste file docker-compose.yml và deploy.
📖 Bài trước: Phần 6, Deploy Backend Apps
I. Khi nào cần Docker Compose?
- Ứng dụng gồm nhiều containers: web app + database + Redis + worker
- Cần kiểm soát networking giữa services
- Muốn deploy stack có sẵn (WordPress + MySQL, GitLab, Supabase…)
- Khi Nixpacks/Dockerfile đơn không đủ cho multi-service apps
ℹ️ Nếu chỉ cần 1 app + 1 database, không cần Docker Compose, tạo riêng từng resource dễ quản lý hơn. Docker Compose phù hợp khi services phụ thuộc chặt chẽ vào nhau.
II. Tạo Docker Compose Resource
- Vào Project → Environment → “+ Add Resource”
- Chọn “Docker Compose Empty” (viết từ đầu) hoặc link repo chứa file docker-compose.yml
- Paste hoặc edit docker-compose.yml trong editor
- Click Deploy


III. Ví dụ: WordPress + MySQL

services:
wordpress:
image: wordpress:latest
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: wp_user
WORDPRESS_DB_PASSWORD: wp_password
WORDPRESS_DB_NAME: wordpress
volumes:
- wordpress_data:/var/www/html
ports:
- "8080:80"
depends_on:
- mysql
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: wordpress
MYSQL_USER: wp_user
MYSQL_PASSWORD: wp_password
volumes:
- mysql_data:/var/lib/mysql
volumes:
wordpress_data:
mysql_data:
⚠️ Trong Coolify Docker Compose, không cần khai báo networks: Coolify tự tạo shared network cho tất cả services trong compose file. Services tự nhìn thấy nhau qua tên service.
IV. Ví dụ: App + PostgreSQL + Redis
services:
app:
build: .
environment:
DATABASE_URL: postgresql://appuser:apppass@postgres:5432/myapp
REDIS_URL: redis://redis:6379
ports:
- "3000:3000"
depends_on:
- postgres
- redis
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: appuser
POSTGRES_PASSWORD: apppass
POSTGRES_DB: myapp
volumes:
- pg_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
worker:
build: .
command: node worker.js
environment:
DATABASE_URL: postgresql://appuser:apppass@postgres:5432/myapp
REDIS_URL: redis://redis:6379
depends_on:
- postgres
- redis
volumes:
pg_data:
redis_data:
V. Domain cho Docker Compose Services
Mặc định chỉ service có ports mapping mới accessible từ ngoài. Để gán domain:
- Deploy compose stack
- Vào resource → tìm service cần domain (VD: wordpress)
- Set domain trong FQDN field:
https://blog.example.com - Traefik tự route traffic đến đúng container
VI. Persistent Volumes

Volumes trong Docker Compose được Coolify tự quản lý:
- Named volumes: Khai báo trong
volumes:section → Coolify tạo Docker volumes tự động - Bind mounts: Có thể map path trên host:
./data:/app/data - Data persist qua redeploy: chỉ mất khi xoá volume thủ công
🚨 Khi xoá resource Docker Compose, Coolify hỏi có muốn xoá volumes không. Chọn “Keep Volumes” nếu muốn giữ data!
VII. Environment Variables trong Compose
Có 2 cách set environment variables:
- Inline trong compose file:
environment:section (hiển thị rõ trong file) - Qua Coolify UI: Tab “Environment Variables”: an toàn hơn, không lộ trong file
- Coolify UI variables override inline values: ưu tiên cao hơn
VIII. Tổng kết
Docker Compose trên Coolify giúp deploy multi-service stacks dễ dàng, paste compose file, deploy, gán domain. Coolify xử lý networking, volumes, và SSL tự động. Bài tiếp: CI/CD với GitHub, GitLab, Bitbucket.
Có thể bạn cần xem thêm
- Deploy ứng dụng Node.js / Python với Docker Compose
- Deploy Node.js, Python, PHP lên Coolify
- Docker Compose trong thực tế – Tổng hợp project mẫu
- Deploy WordPress + MySQL + phpMyAdmin bằng Docker Compose
- Giao diện Coolify- Hướng dẫn sử dụng Dashboard chi tiết
- Docker Compose là gì? Cài đặt và cú pháp cơ bản
Về tác giả
Thạch Phạm
Đồng sáng lập và Giám đốc điều hành của AZDIGI. Có hơn 15 năm kinh nghiệm trong phổ biến kiến thức liên quan đến WordPress tại thachpham.com, phát triển website và phát triển hệ thống.