6.3 KiB
6.3 KiB
🚀 SETUP.md — Первичная настройка Окнардии
Версия: 0.2.0 | Дата: 18.05.2026 | Docker: ✅ Поддерживается
Этот документ описывает пошаговую настройку проекта для разработки и деплоя.
🐳 Быстрый старт: Docker Dev Environment
1️⃣ Запуск контейнера
cd /Users/e-serg/PRJ/2022-oknardia
docker compose -f docker-compose.local.yml up --build
Сайт будет доступен на http://localhost:8060
2️⃣ Основные команды
# Просмотр логов в реальном времени
docker compose -f docker-compose.local.yml logs web -f
# Зайти в контейнер (bash)
docker compose -f docker-compose.local.yml exec web bash
# Перезагрузить контейнер
docker compose -f docker-compose.local.yml restart web
# Остановить контейнер
docker compose -f docker-compose.local.yml down
✨ Особенности:
- ✅ Live reload — при изменении кода автоматически перезагружается
- ✅ Синхронизция файлов — база, медиа, статика синхронизированы с хостом
- ✅ Миграции автоматические — применяются при каждом старте
- ✅ DEBUG режим — подробные ошибки и админка
👁️ Подробнее про Docker разработку → см. раздел "🐳 Docker Development" ниже.
🐳 Docker Development
Структура контейнера
/home/app/ # PROJECT_ROOT
├── oknardia/ # основная папка Django
│ ├── manage.py # точка входа
│ ├── oknardia/ # конфиг Django
│ ├── web/ # приложение
│ └── templates/ # шаблоны
├── database/ # SQLite БД (синхронизирована)
├── public/
│ ├── static/ # исходная статика
│ ├── static_collected/ # собранная статика
│ └── media/ # загруженные файлы
└── ...
Volume mounts (синхронизация)
volumes:
- .:/home/app
Это монтирует весь проект (/Users/e-serg/PRJ/2022-oknardia) в /home/app контейнера.
Синхронизация:
- Изменения на хосте сразу видны в контейнере
- Разные между хостом и контейнером сохраняются на диск
- БД и медиа-файлы персистент (не теряются при рестарте контейнера)
Миграции в Docker
# Автоматические при запуске (через docker-compose command):
python manage.py migrate --noinput
# Или вручную внутри контейнера:
docker compose -f docker-compose.local.yml exec web bash
python manage.py makemigrations
python manage.py migrate
# Или непосредственно внутри контейнера:
docker compose -f docker-compose.local.yml exec web python manage.py migrate
Установка новых пакетов
# 1. На хосте добавьте в pyproject.toml:
poetry add some_package
# 2. Пересоберите контейнер:
docker compose -f docker-compose.local.yml up --build
# 3. Зависимости переустановят при старте контейнера
Создание суперюзера (админ)
docker compose -f docker-compose.local.yml exec web python manage.py createsuperuser
Очистка кеша и статики
# Пересоберите статику:
docker compose -f docker-compose.local.yml exec web python manage.py collectstatic --clear --noinput
# Или удалите и пересоздайте:
rm -rf ./public/static_collected/*
docker compose -f docker-compose.local.yml restart web
DEBUG и логирование
# DEBUG=True включен по умолчанию
# Смотрите подробные логи:
docker compose -f docker-compose.local.yml logs web -f --tail=50
# Или с фильтром (только ошибки):
docker compose -f docker-compose.local.yml logs web --tail=100 | grep -i error
Типичные проблемы Docker
"unable to open database file"
# Проверьте что БД существует:
ls -la ./database/oknardia.sqlite3
# Если нет:
cp ./database/oknadria_backup-2026-05-12.sqlite3 ./database/oknardia.sqlite3
docker compose -f docker-compose.local.yml restart web
"404 Not Found" для статики
# Пересоберите статику:
docker compose -f docker-compose.local.yml exec web python manage.py collectstatic --noinput
docker compose -f docker-compose.local.yml restart web
Контейнер падает
# Смотрите полные логи:
docker compose -f docker-compose.local.yml logs web --tail=200
# Часто ошибка в settings.py или import'ах
"Connection refused" при обращении в БД
# Проверьте что контейнер запущен:
docker compose -f docker-compose.local.yml ps
# Перезагрузитесь:
docker compose -f docker-compose.local.yml down && docker compose -f docker-compose.local.yml up
Очистка Docker
# Удалить контейнер и образ:
docker compose -f docker-compose.local.yml down -v
# Удалить весь Docker мусор:
docker system prune -a --volumes
Дополнительные ресурсы
- Django документация
- AGENTS.md — архитектура и конвенции проекта
- README.md — основная информация о проекте