Обновление приложений (RocketChat, Wekan) запущенных в docker.

This commit is contained in:
2025-08-06 11:01:40 +03:00
parent b969a29f64
commit 5cb795417a

84
updateCommunity.sh Normal file
View 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