IgorPI
@IgorPI

Docker-compose auto installation project?

Коллеги, добрый день!

Меня интересует вопрос.
Вопрос связан с автоматической установкой проекта.

Например, мне нужно передать проект кому-нибудь для дальнейшей разработки.
До этого было так, исполнитель ручками выполнял инсталляцию и настройку проекта.
Естественно всё это в docker-compose.

Хочу автоматизировать процесс.
Например вот так:

Power Shell (если линукс контейнеры под windows)
clear
echo "Starting installation..."
echo "---------------------------------"
docker-compose -f dc.dev.yml build
Start-sleep 1

echo ""
echo "Starting..."
docker-compose -f dc.dev.yml up -d
Start-sleep 1


# APP
echo ""
echo "Dependency installation..."
echo "---------------------------------"
docker exec -i rosinter.app composer install
Start-sleep 3

echo ""
docker exec -i rosinter.app php bin/console about
Start-sleep 5


echo ""
echo "Creating a database schema..."
echo "---------------------------------"
docker exec -i rosinter.app php bin/console doctrine:schema:create
Start-sleep 3


echo ""
echo "Restoring data from dump files..."
echo "---------------------------------"
docker exec -i rosinter.db sh -c 'exec mysql -uroot -prk3kw1UDdqOEF4L1pmNkcyQ2oL rosinter < var/mysql/dumps/dump.sql'

echo ""
echo "-------------------------------------"
echo "Installation completed successfully!"
echo "-------------------------------------"


На сколько верна стратегия, если ее можно так назвать?

Какой профит я хочу получить?
1. Я даю ссылку на репозиторий
2. Чувак скачивает проект
3. Запускает скрипт
4. Всё работает

Без дополнительных телодвижений.
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
Лучше если это будут делать скрипты внутри контейнеров.
К примеру как стартует простой скрипт на Python
#!/bin/bash

VENV=./rvenv
# если нет виртуального окружения - создаем его
if [ ! -d $VENV ]; then
    virtualenv -p `which python3` $VENV
    $VENV/bin/pip install -U pip
fi

# устанавливаем/доустанавливаем нужные пакеты
$VENV/bin/pip install -r requirements.txt

# делаем миграции
$VENV/bin/python src/manage.py migrate

# ждем пока контейнер с фронтом соберет библиотеки с помощью webpack
sleep 5

while [ -f ./build_stat.flag ];
do
    sleep 1;
    echo "Wait for webpack"
done;

# собираем статику
$VENV/bin/python src/manage.py collectstatic --no-input


$VENV/bin/uwsgi --yaml ./src/uwsgi.yml
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы