Обновление приложений (RocketChat, Wekan) запущенных в docker.
This commit is contained in:
84
updateCommunity.sh
Normal file
84
updateCommunity.sh
Normal file
@ -0,0 +1,84 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user