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

6.8 KiB
Raw Blame History

Подготовка проекта к контейнеризации

Описание

Этот документ описывает процесс подготовки проекта 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

Подготовка переменных окружения

  1. Скопируй .env.example в .env.prod:

    cp .env.example .env.prod
    
  2. Отредактируй .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

Проверка после развертывания

  1. Проверь доступность приложения:

    curl http://localhost:8000
    
  2. Проверь статус admin панели:

    • Development: http://localhost:8000/admin
    • Логин: admin / Пароль: 1234 (если пользователь существует)
  3. Проверь статические файлы:

  4. Проверь логи на ошибки:

    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
  • Настроить автоматическое резервное копирование БД

Контакты и вопросы

Если возникнут вопросы или проблемы, проверь логи контейнера.