📄 Hướng dẫn cấu hình Docker Compose
Tài liệu này cung cấp thông tin chi tiết về các tùy chọn cấu hình Docker Compose của 88API cho các tình huống triển khai khác nhau.
🧱 Cấu trúc cấu hình cơ bản
Tệp cấu hình Docker Compose docker-compose.yml xác định cách các dịch vụ 88API và các phụ thuộc của chúng (như MySQL, Redis) được triển khai.
🏭 Cấu hình tiêu chuẩn (Được khuyến nghị cho sản xuất)
Dưới đây là cấu hình Docker Compose tiêu chuẩn phù hợp với hầu hết các môi trường sản xuất:
services:
new-api:
image: calciumion/new-api:latest
container_name: new-api
restart: always
command: --log-dir /app/logs
ports:
- '3000:3000'
volumes:
- ./data:/data
- ./logs:/app/logs
environment:
- SQL_DSN=root:123456@tcp(mysql:3306)/new-api # Points to mysql service
- REDIS_CONN_STRING=redis://redis
- TZ=Asia/Shanghai
# - SESSION_SECRET=random_string # Set for multi-machine deployment, must modify this random string!!!!!!!
# - NODE_TYPE=slave # Uncomment for slave nodes in multi-machine deployment
# - SYNC_FREQUENCY=60 # Uncomment if periodic database sync is needed
# - FRONTEND_BASE_URL=https://your-domain.com # Uncomment for multi-machine deployment with frontend URL
depends_on:
- redis
- mysql
healthcheck:
test:
[
'CMD-SHELL',
"wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $$2}'",
]
interval: 30s
timeout: 10s
retries: 3
redis:
image: redis:latest
container_name: redis
restart: always
mysql:
image: mysql:8.2
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456 # Ensure consistency with password in SQL_DSN
MYSQL_DATABASE: new-api
volumes:
- mysql_data:/var/lib/mysql
# ports:
# - "3306:3306" # Uncomment if MySQL access from outside Docker is needed
volumes:
mysql_data:🧪 Cấu hình đơn giản hóa (Thích hợp để thử nghiệm)
Nếu chỉ để thử nghiệm, bạn có thể sử dụng phiên bản đơn giản sau chỉ chứa chính dịch vụ 88API:
services:
new-api:
image: calciumion/new-api:latest
container_name: new-api
restart: always
ports:
- '3000:3000'
environment:
- TZ=Asia/Shanghai
volumes:
- ./data:/data⚙️ Giải thích cấu hình
🔧 Cấu hình dịch vụ 88API
| Tham số | Mô tả |
|---|---|
image | Tên hình ảnh, thường sử dụng calciumion/new-api:latest để tải phiên bản mới nhất |
container_name | Tên vùng chứa, có thể tùy chỉnh |
restart | Chính sách khởi động lại container, nên đặt là always để đảm bảo dịch vụ tự động khởi động lại |
command | Lệnh khởi động, tùy chỉnh thông số khởi động |
ports | Ánh xạ cổng, ánh xạ mặc định cổng container 3000 đến cổng máy chủ 3000 |
volumes | Ánh xạ khối lượng, đảm bảo tính bền vững của dữ liệu |
environment | Cài đặt biến môi trường, được sử dụng để định cấu hình hành vi 88API |
depends_on | Dịch vụ phụ thuộc, đảm bảo thứ tự khởi động đúng |
healthcheck | Cấu hình kiểm tra tình trạng, dùng để theo dõi trạng thái dịch vụ |
🔍 Giải thích về biến môi trường
88API hỗ trợ nhiều cấu hình biến môi trường khác nhau. Dưới đây là một số cái thường được sử dụng:
| Biến môi trường | Mô tả | Ví dụ |
|---|---|---|
SQL_DSN | Chuỗi kết nối cơ sở dữ liệu | root:123456@tcp(mysql:3306)/new-api |
REDIS_CONN_STRING | Chuỗi kết nối Redis | redis://redis |
TZ | Cài đặt múi giờ | Asia/Shanghai |
SESSION_SECRET | Bí mật phiên (bắt buộc để triển khai nhiều máy) | your_random_string |
NODE_TYPE | Loại nút (chính/nô lệ) | master hoặc slave |
SYNC_FREQUENCY | Tần số đồng bộ (giây) | 60 |
Để biết danh sách đầy đủ các biến môi trường, vui lòng tham khảo Hướng dẫn cấu hình biến môi trường.
🌐 Cấu hình triển khai nhiều nút
Đối với các kịch bản triển khai nhiều nút, cấu hình nút chính và nút phụ hơi khác nhau:
👑 Cấu hình nút chính
services:
new-api-master:
image: calciumion/new-api:latest
container_name: new-api-master
restart: always
ports:
- '3000:3000'
environment:
- SQL_DSN=root:123456@tcp(mysql:3306)/new-api
- REDIS_CONN_STRING=redis://redis
- SESSION_SECRET=your_unique_session_secret
- CRYPTO_SECRET=your_unique_crypto_secret
- TZ=Asia/Shanghai
volumes:
- ./data:/data👥 Cấu hình nút nô lệ
services:
new-api-slave:
image: calciumion/new-api:latest
container_name: new-api-slave
restart: always
ports:
- '3001:3000' # Note different port mapping
environment:
- SQL_DSN=root:123456@tcp(mysql:3306)/new-api
- REDIS_CONN_STRING=redis://redis
- SESSION_SECRET=your_unique_session_secret # Must be same as master node
- CRYPTO_SECRET=your_unique_crypto_secret # Must be same as master node
- NODE_TYPE=slave # Set as slave node
- SYNC_FREQUENCY=60
- TZ=Asia/Shanghai
volumes:
- ./data-slave:/data📝 Hướng dẫn sử dụng
⬇️ Cài đặt
Lưu cấu hình dưới dạng tập tin docker-compose.yml, sau đó chạy trong cùng thư mục:
docker compose up -d📋 Xem nhật ký
docker compose logs -f🛑 Dừng dịch vụ
docker compose downMẹo
Để biết thêm thông tin về cách sử dụng Docker Compose, vui lòng tham khảo Docker Hướng dẫn cài đặt Compose.