Files
2024-test-rosmorport/DOCKER.md
erjemin d9e8c2d8bd feat: Настройка проекта для локальной разработки
- Добавлена конфигурация через poetry (pyproject.toml + poetry.lock)
- Переделана система конфигурации Django с .env переменными
- Добавлен файл .env для локальной разработки (SQLite БД)
- Обновлен settings.py для работы с переменными окружения
- Создана документация по локальной разработке (DEVELOPMENT.md)
- Подготовлена инфраструктура для Docker (Dockerfile, docker-compose.yml)
- Обновлен .gitignore для Python/Django проекта
Проект работает локально с миграциями и админ пользователем (admin/1234).
2026-03-31 00:09:46 +03:00

236 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Подготовка проекта к контейнеризации
## Описание
Этот документ описывает процесс подготовки проекта 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
- [ ] Настроить автоматическое резервное копирование БД
## Контакты и вопросы
Если возникнут вопросы или проблемы, проверь логи контейнера.