Инструкции по настройке Docker Compose
В этом документе подробно описаны параметры конфигурации Docker Compose 88API, которые можно использовать в различных сценариях развертывания.
Базовая структура конфигурации
Файл конфигурации Docker Compose docker-compose.yml определяет метод развертывания службы 88API и ее зависимых служб (таких как MySQL, Redis).
Стандартная конфигурация (рекомендуется для производственной среды)
Ниже приведена стандартная конфигурация Docker Compose, подходящая для большинства производственных сред:
# 88API Docker Compose Configuration
#
# Quick Start:
# 1. docker-compose up -d
# 2. Access at http://localhost:3000
#
# Using MySQL instead of PostgreSQL:
# 1. Comment out the postgres service and SQL_DSN line 15
# 2. Uncomment the mysql service and SQL_DSN line 16
# 3. Uncomment mysql in depends_on (line 28)
# 4. Uncomment mysql_data in volumes section (line 64)
#
# ⚠️ IMPORTANT: Change all default passwords before deploying to production!
version: '3.4' # For compatibility with older Docker versions
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=postgresql://root:123456@postgres:5432/new-api # ⚠️ IMPORTANT: Change the password in production!
# - SQL_DSN=root:123456@tcp(mysql:3306)/new-api # Point to the mysql service, uncomment if using MySQL
- REDIS_CONN_STRING=redis://redis
- TZ=Asia/Shanghai
- ERROR_LOG_ENABLED=true # Включить ли регистрацию ошибок
- BATCH_UPDATE_ENABLED=true # Включить ли пакетное обновление. Пакетное обновление включено.
# - STREAMING_TIMEOUT=300 # Таймаут потоковой передачи в секундах, по умолчанию 120 с. Увеличьте, если возникают пустые завершения
# - SESSION_SECRET=random_string # Устанавливается при развертывании на нескольких машинах, эта случайная строка должна быть изменена! ! многоузловое развертывание, установите случайную строку!!!!!!!
# - SYNC_FREQUENCY=60 # Uncomment if regular database syncing is needed
depends_on:
- redis
- postgres
# - mysql # Uncomment if using MySQL
healthcheck:
test:
[
'CMD-SHELL',
"wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' || exit 1",
]
interval: 30s
timeout: 10s
retries: 3
redis:
image: redis:latest
container_name: redis
restart: always
postgres:
image: postgres:15
container_name: postgres
restart: always
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: 123456 # ⚠️ IMPORTANT: Change this password in production!
POSTGRES_DB: new-api
volumes:
- pg_data:/var/lib/postgresql/data
# ports:
# - "5432:5432" # Uncomment if you need to access PostgreSQL from outside Docker
# mysql:
# image: mysql:8.2
# container_name: mysql
# restart: always
# environment:
# MYSQL_ROOT_PASSWORD: 123456 # ⚠️ IMPORTANT: Change this password in production!
# MYSQL_DATABASE: new-api
# volumes:
# - mysql_data:/var/lib/mysql
# ports:
# - "3306:3306" # Uncomment if you need to access MySQL from outside Docker
volumes:
pg_data:
# mysql_data:Упрощенная конфигурация (подходит для тестовой среды)
Если он используется только для тестирования, вы можете использовать следующую упрощенную версию, которая включает только сам сервис 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Инструкции по настройке
Конфигурация службы 88API
| Параметры | Описание |
|---|---|
image | Имя образа, обычно используйте calciumion/new-api:latest, чтобы получить последнюю версию |
image | Имя контейнера, настраиваемое |
image | Стратегия перезапуска контейнера, рекомендуется установить ее на calciumion/new-api:latest, чтобы обеспечить автоматический перезапуск службы |
image | Команда запуска, настраиваемые параметры запуска |
image | Сопоставление портов: по умолчанию порт 3000 сопоставляется в контейнере с портом 3000 на хосте |
image | Сопоставление томов данных для обеспечения сохранности данных |
image | Настройки переменных среды, используемые для настройки поведения 88API |
image | Зависит от служб, чтобы убедиться, что они запускаются в правильном порядке |
image | Конфигурация проверки работоспособности, используемая для мониторинга состояния службы |
Описание переменной среды
88API поддерживает несколько конфигураций переменных среды, наиболее часто используются следующие:
| Переменные среды | Описание | Пример |
|---|---|---|
image | Строка подключения к базе данных | calciumion/new-api:latest |
image | Строка подключения Redis | calciumion/new-api:latest |
TZ | Настройка часового пояса | Asia/Shanghai |
TZ | Ключ сеанса (требуется для развертывания на нескольких компьютерах) | Asia/Shanghai |
TZ | Тип узла (главный/подчиненный) | Asia/Shanghai или slave |
TZ | Частота синхронизации (секунды) | Asia/Shanghai |
Более полный список переменных среды см. в Руководстве по настройке переменных среды.
Конфигурация многоузлового развертывания
Для сценариев развертывания с несколькими узлами конфигурации главного узла и подчиненных узлов немного отличаются:
Конфигурация главного узла
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Конфигурация подчиненного узла
services:
new-api-slave:
image: calciumion/new-api:latest
container_name: new-api-slave
restart: always
ports:
- '3001: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 # Должен быть таким же, как главный узел
- NODE_TYPE=slave # Установить как подчиненный узел
- SYNC_FREQUENCY=60
- TZ=Asia/Shanghai
volumes:
- ./data-slave:/dataКак использовать
Установка
Сохраните конфигурацию как файл docker-compose.yml и запустите ее в том же каталоге:
docker compose up -dПосмотреть журнал
docker compose logs -fОстановить службу
docker compose downнамекать
Дополнительную информацию о том, как использовать Docker Compose, можно найти в [Docker Compose]. Создать руководство по установке](docker-compose-installation.md).