diff --git a/updateCommunity.sh b/updateCommunity.sh new file mode 100644 index 0000000..017d568 --- /dev/null +++ b/updateCommunity.sh @@ -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 " + 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 "Необоходимо указать параметры \nИспользование: updateService wekan v7.84" + ;; +esac \ No newline at end of file