88API88API
User GuideAI ApplicationsAPI ReferenceHelp & Support

📄 Guide de configuration de Docker Compose

Ce document fournit des informations détaillées sur les options de configuration Docker Compose de 88API pour divers scénarios de déploiement.

🧱 Structure de configuration de base

Le fichier de configuration Docker Compose docker-compose.yml définit comment les services 88API et leurs dépendances (telles que MySQL, Redis) sont déployés.

🏭 Configuration standard (recommandée pour la production)

Vous trouverez ci-dessous la configuration standard de Docker Compose adaptée à la plupart des environnements de production:

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:

🧪 Configuration simplifiée (adaptée aux tests)

Ne serait-ce que pour tester, vous pouvez utiliser la version simplifiée suivante contenant uniquement le service 88API lui-même:

services:
  new-api:
    image: calciumion/new-api:latest
    container_name: new-api
    restart: always
    ports:
      - '3000:3000'
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./data:/data

⚙️ Explication de la configuration

🔧Configuration du service 88API

ParamètreDescriptif
imageNom de l'image, utilisez généralement calciumion/new-api:latest pour obtenir la dernière version
container_nameNom du conteneur, personnalisable
restartPolitique de redémarrage du conteneur, il est recommandé de la définir sur always pour garantir le redémarrage automatique du service
commandCommande de démarrage, paramètres de démarrage personnalisables
portsMappage de port, mappe par défaut le port de conteneur 3000 au port hôte 3000
volumesCartographie des volumes, assure la persistance des données
environmentParamètres des variables d'environnement, utilisés pour configurer le comportement de 88API
depends_onServices dépendants, garantit un ordre de démarrage correct
healthcheckConfiguration du contrôle de santé, utilisée pour surveiller l'état du service

🔍 Explication des variables d'environnement

88API prend en charge diverses configurations de variables d'environnement. En voici quelques-uns couramment utilisés:

Variable d'environnementDescriptifExemple
SQL_DSNChaîne de connexion à la base de donnéesroot:123456@tcp(mysql:3306)/new-api
REDIS_CONN_STRINGChaîne de connexion Redisredis://redis
TZParamétrage du fuseau horaireAsia/Shanghai
SESSION_SECRETSecret de session (obligatoire pour le déploiement sur plusieurs machines)your_random_string
NODE_TYPEType de nœud (maître/esclave)master ou slave
SYNC_FREQUENCYFréquence de synchronisation (secondes)60

Pour une liste complète des variables d'environnement, veuillez vous référer au [Guide de configuration des variables d'environnement] (environment-variables.md).

🌐 Configuration de déploiement multi-nœuds

Pour les scénarios de déploiement multi-nœuds, les configurations des nœuds maître et esclave sont légèrement différentes:

👑 Configuration du nœud maître

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

👥 Configuration du nœud esclave

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

📝 Mode d'emploi

⬇️Installation

Enregistrez la configuration sous forme de fichier docker-compose.yml, puis exécutez dans le même répertoire:

docker compose up -d

📋 Affichage des journaux

docker compose logs -f

🛑 Arrêt des services

docker compose down

Astuce

Pour plus d'informations sur l'utilisation de Docker Compose, veuillez vous référer à Docker Guide d'installation de Compose.