274 lines
6.0 KiB
Markdown
274 lines
6.0 KiB
Markdown
# 🐳 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`** 🚀
|
||
|