nakama/docker-compose.yml

115 lines
3.0 KiB
YAML

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}
volumes:
# Медиа хранится на удаленном сервере, монтируем через NFS или SSH
- /mnt/nakama-media:/app/backend/uploads
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.'"
networks:
nakama-network:
driver: bridge
volumes:
nakama-db:
driver: local
nakama-media:
driver: local
nakama-backups:
driver: local