nakama/moderation/backend-py/DOCKER.md

274 lines
6.0 KiB
Markdown
Raw Permalink Normal View History

2025-12-14 23:45:41 +00:00
# 🐳 Docker запуск - Python Moderation Backend
## Быстрый запуск
```bash
cd moderation/backend-py
./docker-start.sh
```
Скрипт автоматически:
1. Соберет Docker образ
2. Остановит старый контейнер (если есть)
3. Запустит новый контейнер
4. Покажет логи
## Ручной запуск
### 1. Сборка образа
```bash
cd moderation/backend-py
docker build -t nakama-moderation-py .
```
### 2. Запуск контейнера
```bash
docker run -d \
--name nakama-moderation-py \
-p 3001:3001 \
--env-file ../../.env \
--restart unless-stopped \
nakama-moderation-py
```
### 3. Проверка
```bash
# Логи
docker logs nakama-moderation-py
# Логи в реальном времени
docker logs -f nakama-moderation-py
# Health check
curl http://localhost:3001/health
```
## Docker Compose
### Вариант 1: Отдельный запуск
```bash
cd moderation/backend-py
docker-compose -f docker-compose.moderation-py.yml up -d
```
### Вариант 2: Интеграция в основной docker-compose
Добавьте в корневой `docker-compose.yml`:
```yaml
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
```
Затем:
```bash
# Из корня проекта
docker-compose up -d moderation-backend-py
```
## Управление контейнером
```bash
# Остановить
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
```
## Обновление
```bash
# Пересобрать образ
docker build -t nakama-moderation-py .
# Перезапустить контейнер
docker stop nakama-moderation-py
docker rm nakama-moderation-py
./docker-start.sh
```
## Проверка работы
```bash
# 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 не используется)
```bash
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
```bash
# Из корня проекта
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, добавьте:
```nginx
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:
```bash
sudo nginx -t
sudo systemctl reload nginx
```
## Troubleshooting
### Контейнер не запускается
```bash
# Проверить логи
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 не работает
```bash
# Войти в контейнер и проверить
docker exec -it nakama-moderation-py python test_email.py
```
### Порт занят
```bash
# Проверить, что запущено на порту 3001
sudo lsof -i :3001
# или
sudo netstat -tulpn | grep 3001
# Остановить Node.js версию
pm2 stop moderation-backend
```
## Мониторинг
```bash
# Статус контейнера
docker ps | grep moderation-py
# Использование ресурсов
docker stats nakama-moderation-py
# Логи с меткой времени
docker logs -f --timestamps nakama-moderation-py
```
---
**Готово! Запускайте через `./docker-start.sh`** 🚀