Перейти к содержанию

Установка платформы planiqum

Cкачиваем необходимые файлы

Файлы, необходимые для установки платформы (docker-compose.yml, .conf и т.д.).

Следующая команда скачивает архив, распаковывает в текущей директории и удаляет ненужный файл.

В случае необходимости (обновились установочные файлы) можно повторить процедуру.

wget -O infrastructure-dev.tar.gz https://storage.yandexcloud.net/infastructure/infrastructure-dev.tar.gz && tar -xzvf infrastructure-dev.tar.gz --strip-components=1 && rm infrastructure-dev.tar.gz

Устанавливаем docker и docker compose

Обычно достаточно

sudo apt update && sudo apt install docker
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

Обратите внимание, что docker compose должен быть версии не ниже 2.0

Проверьте версию командой

docker compose version

Обратитесь к официальной документации в случае необходимости

Инструкция по установке Docker Desktop для Ubuntu

Инструкция по установке Docker Compose для Linux

Подключаемся к Yandex Container Registry

Приложение запускается из образов, размещённых в закрытом реестре Yandex Container Registry.

Для подключения к реестру требуется авторизованный ключ key.json для сервисного аккаунта. Запросите его у разработчика.

Файл key.json нужно выложить в директорию проекта и выполнить команду

cat key.json | docker login \
  --username json_key \
  --password-stdin \
  cr.yandex
Инструкция по подключению к Yandex Container Registry с помощью авторизованного ключа

В случае возникновения ошибки permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

попробуйте добавить пользователя в группу docker, создав её в случае необходимости, и повторить подключение к реестру

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

Настраиваем базу данных

Необходимые разрешения

Необходимо разрешить загрузку данных из локальных файлов

Самый простой способ:

Разместить в файле /etc/mysql/my.cnf следующие строки

[mysqld]
local-infile

[mysql]
local-infile

Другие способы смотри по ссылке: https://stackoverflow.com/questions/10762239/mysql-enable-load-data-local-infile

Создание пустую БД

Создайте базу данных MySQL с регистрозависимыми default character set И collate

Рекомендуем называть базу по имени проекта и ветки разработки '{PROJECT}_{CI_COMMIT_BRANCH}'

create database {db_name} default character set utf8mb4 collate utf8mb4_bin;

Создайте пользователя и дайте ему полный доступ к базе

create {db_user} identified by '{db_pass}';
grant all privileges on {db_name}.* to {db_user};

Из службы web при запуске контейнера будут выполнены команды ./manage.py migrate, которые создадут необходимые таблицы

После этого нужно будет создать суперпользователя и определить структуры данных

Восстановление БД из дампа

Восстановите базу данных из дампа по стандартной процедуре

Использование базы данных из docker-container

В случае необходимости вы можете использовать базу данных в docker-container, укажите DB_HOST=0.0.0.0 и задайте DB_ROOT_PASS (по умолчанию будет использоваться пароль 'no_secret')

Перед первым использованием запустите контейнер для сервиса db и создайте базу

docker compose up -d db

Войдите в контейнер

docker exec -it planiqum_{PROJECT}_{CI_COMMIT_BRANCH} bash

Создание пустой базы данных

Подключитесь к MySQL в контейнере под root и создайте новую базу данных, воспользовавшись рекомендациями из предыдущего пункта

mysql -h0.0.0.0 -uroot -p{db_root_pass}

Восстановление базы данных из дампа

В случае необходимости можно разместить файл с дампом базы данных в директории exchange в корне проекта.

Эта директория видна из контейнера db, можно восстановить базу из дампа, войдя в контейнер и выполнив соответсвующую команду.

Настройка переменных окружения

Переменные окружения настраиваются в файле .env в корне проекта

CI_COMMIT_BRANCH=[dev|main]
PROJECT={кодовое название проекта}
HOST={адрес сайта для NGINX}
NGINX_CONF=[ssl|nossl]

SECRET_KEY={произвольный секрет для Django}

DEBUG=[false|true]

DB_NAME=
DB_USER=
DB_PASS=

Запуск приложения

docker compose up -d

Загрузит образы из Yandex Container Registry и запустит контейнеры.

В рамках init выполнит ./manage.py migrate и ./manage.py collectstatic

В целях отладки можно запустить без -d, чтобы получить сообщения об ошибках в реальном времени.

Перезапуск приложения

docker compose down
docker compose up -d