84 lines
3.2 KiB
Bash
84 lines
3.2 KiB
Bash
#!/bin/bash
|
||
|
||
if [[ $# -lt 2 ]]; then
|
||
echo "Использование: $0 service version"
|
||
echo " service - Укзать обновляемый сервис: rocketchat или wekan"
|
||
echo " version - Новая версия приложения"
|
||
exit 1
|
||
fi
|
||
|
||
case "$1" in
|
||
'rocketchat')
|
||
# Принимаем новую версию как аргумент
|
||
NEW_VERSION="$2"
|
||
|
||
echo "Загрузка образа: rocket.chat:$NEW_VERSION"
|
||
if ! docker pull registry.rocket.chat/rocketchat/rocket.chat:$NEW_VERSION > /dev/null 2>&1; then
|
||
echo 'Образ не найден.'
|
||
exit 1
|
||
fi
|
||
|
||
# Путь к .env
|
||
cd /opt/docker/chat/
|
||
ENV_FILE=".env"
|
||
|
||
# Переменная в .env, отвечающая за версию приложения (например, APP_VERSION)
|
||
VERSION_VAR="RELEASE"
|
||
|
||
if [ -z "$NEW_VERSION" ]; then
|
||
echo "Ошибка: необходимо указать новую версию приложения в формате: ./update_app.sh <new_version>"
|
||
exit 1
|
||
fi
|
||
|
||
# Обновляем версию в файле .env
|
||
if grep -q "^$VERSION_VAR=" "$ENV_FILE"; then
|
||
sed -i.bak "s/^$VERSION_VAR=.*/$VERSION_VAR=$NEW_VERSION/" "$ENV_FILE"
|
||
else
|
||
# Если переменной нет, добавляем в конец файла
|
||
echo "$VERSION_VAR=$NEW_VERSION" >> "$ENV_FILE"
|
||
fi
|
||
|
||
echo "Версия приложения обновлена в $ENV_FILE: $VERSION_VAR=$NEW_VERSION"
|
||
|
||
# Остановить контейнер приложения
|
||
docker compose stop rocketchat
|
||
docker volume prune --force
|
||
# Удалить контейнер приложения и анонимные тома, связанные с ним
|
||
docker compose rm -fv -s rocketchat
|
||
|
||
# Запустить docker compose заново с обновлённым приложением
|
||
docker compose pull rocketchat
|
||
docker compose up -d rocketchat
|
||
|
||
echo "Обновление приложения $1 до версии $NEW_VERSION выполнено."
|
||
|
||
docker image prune -af > /dev/null 2>&1
|
||
;;
|
||
'wekan')
|
||
echo "Загрузка образа: wekan:$2"
|
||
if ! docker pull wekanteam/wekan:$2 > /dev/null 2>&1; then
|
||
echo 'Образ не найден.'
|
||
exit 1
|
||
fi
|
||
|
||
# Принимаем новую версию как аргумент
|
||
cd /opt/docker/board/ && sed -i.bak "s#wekanteam/wekan:.*#wekanteam/wekan:$2#" docker-compose.yml
|
||
|
||
# Остановить контейнер приложения
|
||
docker compose stop wekan
|
||
docker volume prune --force
|
||
# Удалить контейнер приложения и анонимные тома, связанные с ним
|
||
docker compose rm -fv -s wekan
|
||
|
||
# Запустить docker compose заново с обновлённым приложением
|
||
docker compose pull wekan
|
||
docker compose up -d wekan
|
||
|
||
echo "Обновление приложения $1 до версии $2 выполнено."
|
||
|
||
docker image prune -af > /dev/null 2>&1
|
||
;;
|
||
*)
|
||
echo -e "Необоходимо указать параметры <service: rocketchat или wekan> <version>\nИспользование: updateService wekan v7.84"
|
||
;;
|
||
esac |