Files
2022_oknardia/SETUP.md
T

188 lines
6.3 KiB
Markdown

# 🚀 SETUP.md — Первичная настройка Окнардии
**Версия**: 0.2.0 | **Дата**: 18.05.2026 | **Docker**: ✅ Поддерживается
Этот документ описывает пошаговую настройку проекта для разработки и деплоя.
---
## 🐳 Быстрый старт: Docker Dev Environment
### 1️⃣ Запуск контейнера
```bash
cd /Users/e-serg/PRJ/2022-oknardia
docker compose -f docker-compose.local.yml up --build
```
Сайт будет доступен на **http://localhost:8060**
### 2️⃣ Основные команды
```bash
# Просмотр логов в реальном времени
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 (синхронизация)
```yaml
volumes:
- .:/home/app
```
Это монтирует весь проект (`/Users/e-serg/PRJ/2022-oknardia`) в `/home/app` контейнера.
**Синхронизация:**
- Изменения на хосте сразу видны в контейнере
- Разные между хостом и контейнером сохраняются на диск
- БД и медиа-файлы персистент (не теряются при рестарте контейнера)
### Миграции в Docker
```bash
# Автоматические при запуске (через 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
```
### Установка новых пакетов
```bash
# 1. На хосте добавьте в pyproject.toml:
poetry add some_package
# 2. Пересоберите контейнер:
docker compose -f docker-compose.local.yml up --build
# 3. Зависимости переустановят при старте контейнера
```
### Создание суперюзера (админ)
```bash
docker compose -f docker-compose.local.yml exec web python manage.py createsuperuser
```
### Очистка кеша и статики
```bash
# Пересоберите статику:
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 и логирование
```bash
# 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"**
```bash
# Проверьте что БД существует:
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" для статики**
```bash
# Пересоберите статику:
docker compose -f docker-compose.local.yml exec web python manage.py collectstatic --noinput
docker compose -f docker-compose.local.yml restart web
```
**Контейнер падает**
```bash
# Смотрите полные логи:
docker compose -f docker-compose.local.yml logs web --tail=200
# Часто ошибка в settings.py или import'ах
```
**"Connection refused" при обращении в БД**
```bash
# Проверьте что контейнер запущен:
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
```bash
# Удалить контейнер и образ:
docker compose -f docker-compose.local.yml down -v
# Удалить весь Docker мусор:
docker system prune -a --volumes
```
---
## Дополнительные ресурсы
- [Django документация](https://docs.djangoproject.com/en/stable/)
- [AGENTS.md](./AGENTS.md) — архитектура и конвенции проекта
- [README.md](./README.md) — основная информация о проекте