nakama/docker-compose.yml

128 lines
3.6 KiB
YAML
Raw Permalink Normal View History

2025-11-20 21:32:48 +00:00
version: '3.8'
services:
backend:
build:
context: .
dockerfile: Dockerfile.backend
container_name: nakama-backend
restart: unless-stopped
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- PORT=3000
- MONGODB_URI=${MONGODB_URI:-mongodb://103.80.87.247:27017/nakama}
- JWT_SECRET=${JWT_SECRET}
- JWT_ACCESS_SECRET=${JWT_ACCESS_SECRET}
- JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET}
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
- MODERATION_BOT_TOKEN=${MODERATION_BOT_TOKEN}
- MODERATION_OWNER_USERNAMES=${MODERATION_OWNER_USERNAMES:-glpshchn00}
- MODERATION_CHANNEL_USERNAME=${MODERATION_CHANNEL_USERNAME:-@reichenbfurry}
- GELBOORU_API_KEY=${GELBOORU_API_KEY}
- GELBOORU_USER_ID=${GELBOORU_USER_ID}
- FRONTEND_URL=${FRONTEND_URL:-http://localhost:5173}
- CORS_ORIGIN=${CORS_ORIGIN:-*}
- REDIS_URL=${REDIS_URL}
2025-11-20 22:07:37 +00:00
# MinIO Configuration (подключение к внешнему серверу)
- MINIO_ENABLED=${MINIO_ENABLED:-true}
- MINIO_ENDPOINT=${MINIO_ENDPOINT:-103.80.87.247}
- MINIO_PORT=${MINIO_PORT:-9000}
- MINIO_USE_SSL=${MINIO_USE_SSL:-false}
- MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}
- MINIO_SECRET_KEY=${MINIO_SECRET_KEY}
- MINIO_BUCKET=${MINIO_BUCKET:-nakama-media}
- MINIO_REGION=${MINIO_REGION:-us-east-1}
- MINIO_PUBLIC_URL=${MINIO_PUBLIC_URL}
2025-11-20 21:32:48 +00:00
volumes:
2025-11-20 22:07:37 +00:00
# Fallback локальное хранилище (если MinIO недоступен)
- nakama-media:/app/backend/uploads
2025-11-20 21:32:48 +00:00
networks:
- nakama-network
depends_on:
- mongodb
healthcheck:
test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1))"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
args:
VITE_API_URL: ${VITE_API_URL:-http://localhost:3000/api}
container_name: nakama-frontend
restart: unless-stopped
ports:
- "5173:80"
networks:
- nakama-network
depends_on:
- backend
moderation:
build:
context: .
dockerfile: Dockerfile.moderation
args:
VITE_API_URL: ${VITE_API_URL:-http://localhost:3000/api}
container_name: nakama-moderation
restart: unless-stopped
ports:
- "5174:80"
networks:
- nakama-network
depends_on:
- backend
mongodb:
image: mongo:7
container_name: nakama-mongodb
restart: unless-stopped
ports:
- "27017:27017"
environment:
- MONGO_INITDB_DATABASE=nakama
volumes:
# База данных на удаленном сервере
- /mnt/nakama-db:/data/db
networks:
- nakama-network
command: mongod --bind_ip_all
backup:
image: mongo:7
container_name: nakama-backup
restart: "no"
environment:
- MONGODB_URI=${MONGODB_URI:-mongodb://103.80.87.247:27017/nakama}
volumes:
- /mnt/nakama-backups:/backups
- ./backend/scripts/backup.js:/backup.js
networks:
- nakama-network
depends_on:
- mongodb
entrypoint: /bin/bash
command: -c "echo 'Backup container ready. Run manual backups or set up cron.'"
2025-11-20 22:07:37 +00:00
# MinIO запущен на отдельном сервере 103.80.87.247
# Локальный MinIO не нужен
2025-11-20 21:32:48 +00:00
networks:
nakama-network:
driver: bridge
volumes:
nakama-db:
driver: local
nakama-media:
driver: local
nakama-backups:
driver: local