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:
235
DOCKER.md
Normal file
235
DOCKER.md
Normal 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
|
||||
- [ ] Настроить автоматическое резервное копирование БД
|
||||
|
||||
## Контакты и вопросы
|
||||
|
||||
Если возникнут вопросы или проблемы, проверь логи контейнера.
|
||||
|
||||
Reference in New Issue
Block a user