nakama/moderation/backend-py/DOCKER.md

6.0 KiB
Raw Blame History

🐳 Docker запуск - Python Moderation Backend

Быстрый запуск

cd moderation/backend-py
./docker-start.sh

Скрипт автоматически:

  1. Соберет Docker образ
  2. Остановит старый контейнер (если есть)
  3. Запустит новый контейнер
  4. Покажет логи

Ручной запуск

1. Сборка образа

cd moderation/backend-py
docker build -t nakama-moderation-py .

2. Запуск контейнера

docker run -d \
  --name nakama-moderation-py \
  -p 3001:3001 \
  --env-file ../../.env \
  --restart unless-stopped \
  nakama-moderation-py

3. Проверка

# Логи
docker logs nakama-moderation-py

# Логи в реальном времени
docker logs -f nakama-moderation-py

# Health check
curl http://localhost:3001/health

Docker Compose

Вариант 1: Отдельный запуск

cd moderation/backend-py
docker-compose -f docker-compose.moderation-py.yml up -d

Вариант 2: Интеграция в основной docker-compose

Добавьте в корневой docker-compose.yml:

  moderation-backend-py:
    build:
      context: ./moderation/backend-py
      dockerfile: Dockerfile
    container_name: nakama-moderation-backend-py
    restart: unless-stopped
    ports:
      - "127.0.0.1:3001:3001"
    env_file:
      - .env
    networks:
      - nakama-network
    healthcheck:
      test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:3001/health')"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

Затем:

# Из корня проекта
docker-compose up -d moderation-backend-py

Управление контейнером

# Остановить
docker stop nakama-moderation-py

# Запустить
docker start nakama-moderation-py

# Перезапустить
docker restart nakama-moderation-py

# Удалить
docker rm -f nakama-moderation-py

# Логи
docker logs nakama-moderation-py
docker logs -f nakama-moderation-py  # real-time

# Зайти в контейнер
docker exec -it nakama-moderation-py bash

# Проверить статус
docker ps | grep moderation-py

Обновление

# Пересобрать образ
docker build -t nakama-moderation-py .

# Перезапустить контейнер
docker stop nakama-moderation-py
docker rm nakama-moderation-py
./docker-start.sh

Проверка работы

# 1. Health check
curl http://localhost:3001/health

# 2. Config
curl http://localhost:3001/api/moderation-auth/config

# 3. Логи
docker logs --tail 50 nakama-moderation-py

# Должны увидеть:
# ============================================================
# 🚀 Запуск сервера модерации (Python)...
# ✅ MongoDB подключена (база: nakama)
# ============================================================

Production deployment

С PM2 (если Docker не используется)

cd moderation/backend-py
source venv/bin/activate

pm2 start "uvicorn main:app --host 0.0.0.0 --port 3001 --workers 2" \
  --name moderation-backend-py \
  --cwd $(pwd) \
  --interpreter python3

pm2 save
pm2 startup

С Docker в production

# Из корня проекта
docker-compose up -d moderation-backend-py

# Или с отдельным compose файлом
cd moderation/backend-py
docker-compose -f docker-compose.moderation-py.yml up -d

Nginx интеграция

Если используете Nginx как reverse proxy, добавьте:

upstream moderation_backend_py {
    server 127.0.0.1:3001;
}

server {
    listen 443 ssl http2;
    server_name moderation.nkm.guru;
    
    # SSL certificates
    ssl_certificate /etc/letsencrypt/live/moderation.nkm.guru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/moderation.nkm.guru/privkey.pem;
    
    # API
    location /api/ {
        proxy_pass http://moderation_backend_py;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    
    # WebSocket
    location /socket.io/ {
        proxy_pass http://moderation_backend_py;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Перезагрузите Nginx:

sudo nginx -t
sudo systemctl reload nginx

Troubleshooting

Контейнер не запускается

# Проверить логи
docker logs nakama-moderation-py

# Проверить .env
ls -la ../../.env

# Проверить MongoDB доступность
docker run --rm mongo:7 mongosh "mongodb://103.80.87.247:27017/nakama" --eval "db.adminCommand('ping')"

Email не работает

# Войти в контейнер и проверить
docker exec -it nakama-moderation-py python test_email.py

Порт занят

# Проверить, что запущено на порту 3001
sudo lsof -i :3001
# или
sudo netstat -tulpn | grep 3001

# Остановить Node.js версию
pm2 stop moderation-backend

Мониторинг

# Статус контейнера
docker ps | grep moderation-py

# Использование ресурсов
docker stats nakama-moderation-py

# Логи с меткой времени
docker logs -f --timestamps nakama-moderation-py

Готово! Запускайте через ./docker-start.sh 🚀