#!/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