📄 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ètre | Descriptif |
|---|---|
image | Nom de l'image, utilisez généralement calciumion/new-api:latest pour obtenir la dernière version |
container_name | Nom du conteneur, personnalisable |
restart | Politique de redémarrage du conteneur, il est recommandé de la définir sur always pour garantir le redémarrage automatique du service |
command | Commande de démarrage, paramètres de démarrage personnalisables |
ports | Mappage de port, mappe par défaut le port de conteneur 3000 au port hôte 3000 |
volumes | Cartographie des volumes, assure la persistance des données |
environment | Paramètres des variables d'environnement, utilisés pour configurer le comportement de 88API |
depends_on | Services dépendants, garantit un ordre de démarrage correct |
healthcheck | Configuration 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'environnement | Descriptif | Exemple |
|---|---|---|
SQL_DSN | Chaîne de connexion à la base de données | root:123456@tcp(mysql:3306)/new-api |
REDIS_CONN_STRING | Chaîne de connexion Redis | redis://redis |
TZ | Paramétrage du fuseau horaire | Asia/Shanghai |
SESSION_SECRET | Secret de session (obligatoire pour le déploiement sur plusieurs machines) | your_random_string |
NODE_TYPE | Type de nœud (maître/esclave) | master ou slave |
SYNC_FREQUENCY | Fré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 downAstuce
Pour plus d'informations sur l'utilisation de Docker Compose, veuillez vous référer à Docker Guide d'installation de Compose.