feat: Настройка проекта для локальной разработки

- Добавлена конфигурация через poetry (pyproject.toml + poetry.lock)
- Переделана система конфигурации Django с .env переменными
- Добавлен файл .env для локальной разработки (SQLite БД)
- Обновлен settings.py для работы с переменными окружения
- Создана документация по локальной разработке (DEVELOPMENT.md)
- Подготовлена инфраструктура для Docker (Dockerfile, docker-compose.yml)
- Обновлен .gitignore для Python/Django проекта
Проект работает локально с миграциями и админ пользователем (admin/1234).
This commit is contained in:
2026-03-31 00:09:46 +03:00
parent a007337f75
commit d9e8c2d8bd
11 changed files with 1925 additions and 27 deletions

235
DOCKER.md Normal file
View File

@@ -0,0 +1,235 @@
# Подготовка проекта к контейнеризации
## Описание
Этот документ описывает процесс подготовки проекта Django `rosmorport_tsts` к развертыванию в Docker контейнерах.
## Подготовка окружения
### Предварительные требования
- **Python** 3.12 или выше
- **Poetry** 1.7 или выше (для управления зависимостями)
- **Docker** и **Docker Compose** (для контейнеризации)
### Установка Poetry
Если Poetry еще не установлена:
```bash
curl -sSL https://install.python-poetry.org | python3 -
export PATH="$HOME/.local/bin:$PATH"
poetry --version
```
### Установка зависимостей локально
```bash
# Перейди в директорию проекта
cd /Users/e-serg/PRJ/2024-test-rosmorport
# Установи зависимости через poetry
poetry install
# Активируй виртуальное окружение
poetry shell
```
## Локальная разработка
### С использованием poetry (рекомендуется для разработки)
```bash
# Установи зависимости
poetry install
# Активируй окружение
poetry shell
# Выполни миграции
cd rosmorport_tsts
python manage.py migrate
# Собери статические файлы
python manage.py collectstatic
# Запусти development сервер
python manage.py runserver 0.0.0.0:8000
# Откройся в браузере: http://localhost:8000
```
### С использованием Docker Compose (для тестирования контейнера)
```bash
# Убедись, что Docker и Docker Compose установлены
docker --version
docker-compose --version
# Запусти контейнер в режиме разработки
docker-compose up -d
# Проверь логи
docker-compose logs -f web
#停止контейнер
docker-compose down
```
**Docker Compose автоматически:**
- Установит зависимости
- Выполнит миграции БД
- Соберет статические файлы
- Запустит Django dev сервер на порту 8000
## Развертывание на Production
### Подготовка переменных окружения
1. Скопируй `.env.example` в `.env.prod`:
```bash
cp .env.example .env.prod
```
2. Отредактируй `.env.prod` с production значениями:
```env
DEBUG=False
ALLOWED_HOSTS=your-domain.com
SECRET_KEY=your-super-secret-key
DB_HOST=db
DB_NAME=rosmorport_db
DB_USER=postgres
DB_PASSWORD=your-secure-password
```
### Запуск на production
```bash
# Запусти Docker Compose с production конфигурацией
docker-compose -f docker-compose.prod.yml up -d
# Проверь статус
docker-compose -f docker-compose.prod.yml ps
# Просмотри логи
docker-compose -f docker-compose.prod.yml logs -f web
```
## Структура файлов
```
.
├── Dockerfile # Конфигурация Docker образа
├── docker-compose.yml # Конфигурация для разработки
├── docker-compose.prod.yml # Конфигурация для production
├── .dockerignore # Файлы, игнорируемые при сборке образа
├── pyproject.toml # Конфигурация Poetry
├── poetry.lock # Заблокированные версии зависимостей
├── .env.example # Шаблон переменных окружения
└── rosmorport_tsts/ # Django проект
├── manage.py
├── rosmorport_tsts/
│ ├── settings.py
│ ├── wsgi.py
│ └── ...
└── ...
```
## Команды для управления контейнерами
### Development (docker-compose.yml)
```bash
# Запуск
docker-compose up -d
# Остановка
docker-compose down
# Просмотр логов
docker-compose logs -f web
# Выполнение команд в контейнере
docker-compose exec web python manage.py createsuperuser
docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py shell
# Пересборка образа
docker-compose up --build
```
### Production (docker-compose.prod.yml)
```bash
# Запуск
docker-compose -f docker-compose.prod.yml up -d
# Остановка
docker-compose -f docker-compose.prod.yml down
# Просмотр логов
docker-compose -f docker-compose.prod.yml logs -f web
# Создание superuser в production
docker-compose -f docker-compose.prod.yml exec web python manage.py createsuperuser
# Выполнение миграций
docker-compose -f docker-compose.prod.yml exec web python manage.py migrate
```
## Проверка после развертывания
1. **Проверь доступность приложения:**
```bash
curl http://localhost:8000
```
2. **Проверь статус admin панели:**
- Development: http://localhost:8000/admin
- Логин: admin / Пароль: 1234 (если пользователь существует)
3. **Проверь статические файлы:**
- http://localhost:8000/static/css/rosmorport.css
4. **Проверь логи на ошибки:**
```bash
docker-compose logs web | grep -i error
```
## Troubleshooting
### Проблема: Порт 8000 уже занят
**Решение:** Измени порт в docker-compose.yml:
```yaml
ports:
- "8080:8000" # Используй 8080 вместо 8000
```
### Проблема: Ошибка при выполнении миграций
**Решение:** Проверь БД и выполни миграции вручную:
```bash
docker-compose exec web python manage.py migrate
```
### Проблема: Статические файлы не загружаются
**Решение:** Пересобери статические файлы:
```bash
docker-compose exec web python manage.py collectstatic --noinput
```
## Дальнейшие улучшения
- [ ] Добавить Nginx для reverse proxy в production
- [ ] Настроить HTTPS/SSL
- [ ] Добавить PostgreSQL вместо SQLite для production
- [ ] Настроить логирование (ELK, Sentry)
- [ ] Добавить health checks
- [ ] Настроить автоматическое резервное копирование БД
## Контакты и вопросы
Если возникнут вопросы или проблемы, проверь логи контейнера.