Skip to content

Latest commit

 

History

History
120 lines (90 loc) · 6.38 KB

local-env.md

File metadata and controls

120 lines (90 loc) · 6.38 KB

Настройка локального окружения

Локальная разработка базируется на docker контейнерах. Это удобнее чем локальная установка python и Postgres, так как не засоряет операционную систему и позволяет гибко управлять зависимостями.

Requirements

Приложение зависит от следующих компонентов

  • Python 3.8
    • Django 3.0+
    • GeoDjango
  • Gdal 3.0+
  • Postgres 12+ (нужно Postgis расширение)
  • WSGI compatible webserver, like Gunicorn (optional for dev)

NOTE: Для разработки не нужно устанавливать компоненты локально, все зависимости будут установлены в Docker контейнеры.


Step 0. Установка Docker

Docker — это оснастка, позволяющая изолировать приложение и его зависимости в контейнер и гибко управлять ими. Docker работает во всех популярных операционных системах. Воспользуйтесь официальным гайдом чтобы установить docker на своем рабочем окружении.

Step 1. Клонирование репозитория

Если вы не настраивали git для работы с github, пройдите соотвествующий гайд. Затем склонируйте репозиторий в папку для разработки.

git clone [email protected]:dtpstat/dtp-stat.git

Step 2. Сборка образов и запуск приложения

После установки docker, мы можем собрать контейнер приложения и связанных сервисов и развернуть их локально.

Проверьте, что Docker работает и настроен. (на всякий случай)

docker run hello-world

Для управления локальными сервисами приложения (БД, веб сервер и тп) мы будем использовать расширение оснастки докера Docker compose. Если вы раньше не работали с этим инструментом, пройдите короткий гайд

Конфигурация находится docker-compose.yml

Собираем docker образ приложения

docker-compose build web

Это самая долгая и хрупкая часть, если что-то пошло не так, скопируйте вывод консоли и спросите в чате. (предварительно попуглив)

Запуск контейнера приложения и связанных сервисов

docker-compose up -d

Загрузка и старт образов может занимать некоторое время. При успешной сборке всех образов, приложение станет доступно по адресу http://127.0.0.1:5000, но без залитых в DB данных приложение будет выдавать ошибку.

Note. Для docker под MacOS при первом старте может возникать ситуация, когда web контейнер никак не видит db контейнер. Лечится через docker-compose restart


Особенности локального развертывания:

  • Корень проекта смонтирован в дирикторию /code docker-контейнера web. Все изменения кода применяются автоматически, перезагружать или пересобирать не нужно.
  • Зависимости установлены в контейнере в общий скоуп образа, без venv (???нужен ли venv)
  • База данных на старте пустая, миграции и заливку справочников нужно выполнить отдельно
  • База данных по умолчанию не доступна с локального порта

Step 3. Миграции и справочники

Так как при первом развертывании база пустая, нужно залить структуру таблиц и данные. Этот шаг можно пропускать, если вы просто повторно запустили ранее развернутые контейнеры.

Подключаеся к bash оболочке web контейнера

docker-compose exec web /bin/bash

Заливаем структуру базы на основе имеющихся миграций

./manage.py migrate --noinput

Creates the cache tables for use with the database cache backend

(это вообще нужно?)

./manage.py createcachetable

Загружаем базовые справочники приложения из фикстур

./manage.py start

Загружаем информацию о ДТП

./manage.py dtp

Приложение развернуто


Step 4. Настройка админки

Админка пригодится, чтобы работать со справочниками и данными приложения через визуальный интерфейс.

Подключаеся к bash оболчке web контейнера

docker-compose exec web /bin/bash

Добавляем супер пользователя

Нужно будет указать пароль ./manage.py createsuperuser --email admin@localhost --username admin

Проверяем доступность админки по адресу

http://localhost:5000/admin/login/ Логин и пароль из команды выше.

Окружение развернуто. См гайд по разработке.