6.0 KiB
6.0 KiB
🐳 Docker запуск - Python Moderation Backend
Быстрый запуск
cd moderation/backend-py
./docker-start.sh
Скрипт автоматически:
- Соберет Docker образ
- Остановит старый контейнер (если есть)
- Запустит новый контейнер
- Покажет логи
Ручной запуск
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 🚀