- Добавлена конфигурация через poetry (pyproject.toml + poetry.lock) - Переделана система конфигурации Django с .env переменными - Добавлен файл .env для локальной разработки (SQLite БД) - Обновлен settings.py для работы с переменными окружения - Создана документация по локальной разработке (DEVELOPMENT.md) - Подготовлена инфраструктура для Docker (Dockerfile, docker-compose.yml) - Обновлен .gitignore для Python/Django проекта Проект работает локально с миграциями и админ пользователем (admin/1234).
6.8 KiB
6.8 KiB
Подготовка проекта к контейнеризации
Описание
Этот документ описывает процесс подготовки проекта Django rosmorport_tsts к развертыванию в Docker контейнерах.
Подготовка окружения
Предварительные требования
- Python 3.12 или выше
- Poetry 1.7 или выше (для управления зависимостями)
- Docker и Docker Compose (для контейнеризации)
Установка Poetry
Если Poetry еще не установлена:
curl -sSL https://install.python-poetry.org | python3 -
export PATH="$HOME/.local/bin:$PATH"
poetry --version
Установка зависимостей локально
# Перейди в директорию проекта
cd /Users/e-serg/PRJ/2024-test-rosmorport
# Установи зависимости через poetry
poetry install
# Активируй виртуальное окружение
poetry shell
Локальная разработка
С использованием poetry (рекомендуется для разработки)
# Установи зависимости
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 (для тестирования контейнера)
# Убедись, что 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
Подготовка переменных окружения
-
Скопируй
.env.exampleв.env.prod:cp .env.example .env.prod -
Отредактируй
.env.prodс production значениями: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
# Запусти 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)
# Запуск
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)
# Запуск
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
Проверка после развертывания
-
Проверь доступность приложения:
curl http://localhost:8000 -
Проверь статус admin панели:
- Development: http://localhost:8000/admin
- Логин: admin / Пароль: 1234 (если пользователь существует)
-
Проверь статические файлы:
-
Проверь логи на ошибки:
docker-compose logs web | grep -i error
Troubleshooting
Проблема: Порт 8000 уже занят
Решение: Измени порт в docker-compose.yml:
ports:
- "8080:8000" # Используй 8080 вместо 8000
Проблема: Ошибка при выполнении миграций
Решение: Проверь БД и выполни миграции вручную:
docker-compose exec web python manage.py migrate
Проблема: Статические файлы не загружаются
Решение: Пересобери статические файлы:
docker-compose exec web python manage.py collectstatic --noinput
Дальнейшие улучшения
- Добавить Nginx для reverse proxy в production
- Настроить HTTPS/SSL
- Добавить PostgreSQL вместо SQLite для production
- Настроить логирование (ELK, Sentry)
- Добавить health checks
- Настроить автоматическое резервное копирование БД
Контакты и вопросы
Если возникнут вопросы или проблемы, проверь логи контейнера.