nakama/moderation/backend-py/DOCKER.md

274 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🐳 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`** 🚀