Установка платформы 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
В случае возникновения ошибки 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