188 lines
6.3 KiB
Markdown
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) — основная информация о проекте
|
|
|
|
|