Hướng dẫn

Dàn Docker Compose sản xuất trên VPS

Trung cấp25 phút đọcCập nhật 27 tháng 6, 2026
Câu trả lời ngắn

Một dàn sản xuất khả thi là Caddy cho TLS tự động, ứng dụng của bạn, PostgreSQL và Redis, được định nghĩa trong một tệp Compose với volume đặt tên và kiểm tra sức khỏe. Trên 8 GB RAM với NVMe, cái này xử lý lưu lượng đáng kể, và snapshot trước mỗi bản triển khai khiến rollback là thao tác hai phút.

01 Cài Docker từ kho chính thức

Distribution packages lag significantly. The convenience script is fine on a fresh instance.

curl -fsSL https://get.docker.com | sh
systemctl enable --now docker

02 Viết tệp Compose

Caddy obtains and renews certificates automatically, which removes the single most common source of production breakage.

services:
  caddy:
    image: caddy:2-alpine
    restart: unless-stopped
    ports: ["80:80", "443:443", "443:443/udp"]
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
  app:
    build: .
    restart: unless-stopped
    depends_on: { db: { condition: service_healthy } }
    environment:
      DATABASE_URL: postgres://app:${DB_PASS}@db:5432/app
  db:
    image: postgres:17-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: ${DB_PASS}
    volumes: [pgdata:/var/lib/postgresql/data]
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U app"]
      interval: 10s
volumes: { caddy_data: {}, pgdata: {} }

03 Cấu hình Caddy

Three lines is a complete TLS-terminating reverse proxy with automatic certificate renewal.

app.example.com {
  encode zstd gzip
  reverse_proxy app:8000
}

04 Sao lưu cơ sở dữ liệu, không phải container

A file copy of a running Postgres data directory produces a corrupt backup that appears to succeed. Dump it properly.

docker compose exec -T db pg_dump -U app app | zstd > /backups/app-$(date +%F).sql.zst

05 Snapshot trước mỗi bản triển khai

Free, instant, and it converts a failed deployment from an incident into a rollback.

Câu hỏi thường gặp

Cần bao nhiêu RAM?

Cộng giới hạn bộ nhớ container và thêm khoảng 1 GB cho máy chủ. Dàn này thoải mái trong 8 GB.

Should I use Docker Swarm or Kubernetes instead?

Không dành cho một máy chủ duy nhất. Compose là công cụ phù hợp cho đến khi bạn thực sự có nhiều hơn một nút.