# ============================================================================== # Docker Compose для РАЗРАБОТКИ (Local Development) # Этот файл содержит настройки для локальной работы (live reload, debug). # Запуск: docker compose -f docker-compose.local up --build # ============================================================================== services: web: # Имя контейнера для удобства container_name: oknardia-backend-dev # Сборка из текущей директории build: . # Пробрасывание портов (чтобы сайт был доступен на localhost:8060) # Занятые порты можно посмотреть через `sudo ss -tulpn` ports: - "8060:8000" # 1. КОМАНДА ЗАПУСКА (Dev режим) # Используем Django runserver для разработки: # - Автоматически отдаёт статику без WhiteNoise # - Имеет встроенный auto-reload при изменении кода # - Безопаснее и проще для dev, чем Gunicorn # - Миграции применяются автоматически при каждом старте # - Пересоздаём пре-рендер шаблоны и sitemap'ы для актуальности command: > sh -c "python manage.py migrate --noinput && python manage.py collectstatic --noinput && python manage.py generate_sitemaps && python manage.py regenerate_seria_prerender && python manage.py runserver 0.0.0.0:8000" # 2. МОНТИРОВАНИЕ КОДА (Live Reload) # Подключаем весь проект целиком в /home/app для правильного вычисления путей PROJECT_ROOT. # При изменении кода runserver автоматически перезагружается (auto-reload). # # Структура монтирования: # Host: /Users/e-serg/PRJ/2022-oknardia (.) # Container: /home/app # ├── oknardia/ <- исходный код (manage.py находится здесь) # ├── database/ <- SQLite БД для синхронизации между хостом и контейнером # ├── public/ <- статика и медиа-файлы # └── templates/ <- Django шаблоны volumes: - .:/home/app # 3. ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ env_file: # файл с переменными окружения для разработки - .env environment: # На всякий случай принудительно включаем DEBUG и DEBUG-уровень логов (вдруг в .env что-то не так) # Эти настройки более приоритетные, чем в .env (если дублируются). - DEBUG=True - DJANGO_LOG_LEVEL=DEBUG # В dev нам не нужно ограничивать буферизацию так строго, но не помешает. # 4. РЕСУРСЫ (Без лимитов для разработки) # Удаляем секцию ограничений, чтобы локально использовать все доступные ресурсы хоста. # deploy: # resources: # limits: # cpus: ... # memory: ... # mem_limit: ...