add: пред-прод контейнер (рабочий)
This commit is contained in:
86
docker-compose.local-prod.yml
Normal file
86
docker-compose.local-prod.yml
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# ==============================================================================
|
||||||
|
# Docker Compose для PRODUCTION тестирования (Local Production Simulation)
|
||||||
|
# Этот файл содержит настройки для локального тестирования production конфигурации.
|
||||||
|
#
|
||||||
|
# ВАЖНО: Используется для отладки production сборки ЛОКАЛЬНО перед деплоем!
|
||||||
|
#
|
||||||
|
# Запуск: docker compose -f docker-compose.local-prod.yml up --build
|
||||||
|
# Остановка: docker compose -f docker-compose.local-prod.yml down
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
# Имя контейнера для удобства
|
||||||
|
container_name: oknardia-backend-prod-test
|
||||||
|
|
||||||
|
# Сборка из текущей директории
|
||||||
|
build: .
|
||||||
|
|
||||||
|
# Пробрасывание портов (тестируем на другом порту, чтобы не конфликтовать с dev)
|
||||||
|
# Dev на 8060, Prod на 8061
|
||||||
|
ports:
|
||||||
|
- "8061:8000"
|
||||||
|
|
||||||
|
# 1. КОМАНДА ЗАПУСКА (Prod режим)
|
||||||
|
# Используем Gunicorn как в production.
|
||||||
|
# При старте контейнера:
|
||||||
|
# 1. Создаём медиа директорию
|
||||||
|
# 2. Применяем миграции
|
||||||
|
# 3. Собираем статику
|
||||||
|
# 4. Генерируем sitemap'ы
|
||||||
|
# 5. Пересоздаём пре-рендер шаблоны серий
|
||||||
|
# 6. Запускаем Gunicorn (нет live reload — это production режим!)
|
||||||
|
command: >
|
||||||
|
sh -c "mkdir -p /home/app/public/media &&
|
||||||
|
python manage.py migrate --noinput &&
|
||||||
|
python manage.py collectstatic --noinput &&
|
||||||
|
python manage.py generate_sitemaps &&
|
||||||
|
python manage.py regenerate_seria_prerender &&
|
||||||
|
python -m gunicorn --workers 2 --bind 0.0.0.0:8000 --timeout 120 oknardia.wsgi:application"
|
||||||
|
|
||||||
|
# 2. МОНТИРОВАНИЕ КОДА И ДАННЫХ
|
||||||
|
# Подключаем весь проект целиком, чтобы Django правильно вычислил пути.
|
||||||
|
# В production файлы будут в контейнере, но для локального тестирования
|
||||||
|
# монтируем для удобства остановки/пересоздания.
|
||||||
|
volumes:
|
||||||
|
# Весь проект в /home/app
|
||||||
|
- .:/home/app
|
||||||
|
|
||||||
|
# 3. ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ (Production)
|
||||||
|
env_file:
|
||||||
|
# Основной конфиг из .env (DATABASE, EMAIL, API ключи)
|
||||||
|
- .env
|
||||||
|
environment:
|
||||||
|
# ПЕРЕОПРЕДЕЛЯЕМ для production режима:
|
||||||
|
- DEBUG=False # ВАЖНО: выключен debug для production
|
||||||
|
- DJANGO_LOG_LEVEL=INFO # Вместо DEBUG (меньше логов)
|
||||||
|
# Для локального тестирования: разрешить отдачу медиа через Django (только test!)
|
||||||
|
# В production это обслуживает Nginx!
|
||||||
|
- ALLOW_MEDIA_SERVE=True
|
||||||
|
|
||||||
|
# 4. РЕСУРСЫ (Для локального тестирования можно без лимитов, но в реальном production нужны)
|
||||||
|
# deploy:
|
||||||
|
# resources:
|
||||||
|
# limits:
|
||||||
|
# cpus: '1'
|
||||||
|
# memory: 512M
|
||||||
|
# reservations:
|
||||||
|
# cpus: '0.5'
|
||||||
|
# memory: 256M
|
||||||
|
|
||||||
|
# 5. ЛОГИРОВАНИЕ
|
||||||
|
# Для отладки production проблем полезно видеть логи
|
||||||
|
logging:
|
||||||
|
driver: "json-file"
|
||||||
|
options:
|
||||||
|
max-size: "10m"
|
||||||
|
max-file: "3"
|
||||||
|
|
||||||
|
# 6. ЗДОРОВЬЕ КОНТЕЙНЕРА
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8000/"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 40s
|
||||||
|
|
||||||
Reference in New Issue
Block a user