88API88API
User GuideAI ApplicationsAPI ReferenceHelp & Support

📄 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ả
imageTên hình ảnh, thường sử dụng calciumion/new-api:latest để tải phiên bản mới nhất
container_nameTên vùng chứa, có thể tùy chỉnh
restartChí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
commandLệ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
environmentCài đặt biến môi trường, được sử dụng để định cấu hình hành vi 88API
depends_onDịch vụ phụ thuộc, đảm bảo thứ tự khởi động đúng
healthcheckCấ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ườngMô tảVí dụ
SQL_DSNChuỗi kết nối cơ sở dữ liệuroot:123456@tcp(mysql:3306)/new-api
REDIS_CONN_STRINGChuỗi kết nối Redisredis://redis
TZCài đặt múi giờAsia/Shanghai
SESSION_SECRETBí mật phiên (bắt buộc để triển khai nhiều máy)your_random_string
NODE_TYPELoại nút (chính/nô lệ)master hoặc slave
SYNC_FREQUENCYTầ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 down

Mẹ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.