From 923334c2bdbf4bf3625b4d61a5227a6d1e4399ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D0=BB=D0=B8=D0=B3=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=BA=D0=BE=20=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9?= Date: Wed, 3 Sep 2025 15:21:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=B0=D1=82=D0=B8=D0=B2=D0=BD=D1=8B=D1=85=20=D1=81=D0=B5?= =?UTF-8?q?=D1=80=D0=B2=D0=B8=D1=81=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- updateService.sh | 85 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 updateService.sh diff --git a/updateService.sh b/updateService.sh new file mode 100644 index 0000000..95e1d4d --- /dev/null +++ b/updateService.sh @@ -0,0 +1,85 @@ +#!/bin/bash + +# Функция вывода помощи +usage() { + echo "Использование: $0 service version" + echo " service - Указать обновляемый сервис: meshcentral, rustdesk или passbolt" + echo " version - Новая версия приложения" + exit 1 +} + +upgradeService() { + docker compose stop > /dev/null 2>&1 + docker compose up -d > /dev/null 2>&1 +} + +upgradeOneService() { + local service="$1" + + # Остановить контейнер приложения + docker compose stop $service > /dev/null 2>&1 + # Запустить docker compose заново с обновлённым приложением + docker compose up -d $service > /dev/null 2>&1 +} + +if [[ $# -lt 2 ]]; then + usage +fi + +# Принимаем новую версию как аргумент +NEW_VERSION="$2" + +case "$1" in + 'meshcentral') + cd /opt/docker/$1/ && sed -i.bak "s#typhonragewind/meshcentral:.*#typhonragewind/meshcentral:$NEW_VERSION#" docker-compose.yml + echo "Загрузка образа: MeshCentral:$NEW_VERSION" + + if ! docker compose pull $1 > /dev/null 2>&1; then + echo 'Образ не найден.' + exit 1 + fi + + echo "Выполняется обновление приложения $1..." + + upgradeOneService meshcentral + + echo "Обновление приложения $1 до версии $NEW_VERSION выполнено." + ;; + 'rustdesk') + cd /opt/docker/$1/ && sed -i.bak "s#rustdesk/rustdesk-server:.*#rustdesk/rustdesk-server:$NEW_VERSION#" docker-compose.yml + + echo "Загрузка образа: RustDesk:$NEW_VERSION" + + if ! docker compose pull > /dev/null 2>&1; then + echo 'Образ не найден.' + exit 1 + fi + + echo "Выполняется обновление приложения $1..." + + upgradeService + + echo "Обновление приложения $1 до версии $NEW_VERSION выполнено." + ;; + 'passbolt') + cd /opt/docker/$1/ && sed -i.bak "s#passbolt/passbolt:.*#passbolt/passbolt:$NEW_VERSION#" docker-compose.yml + + echo "Загрузка образа: Passbolt:$NEW_VERSION" + + if ! docker compose pull $1 > /dev/null 2>&1; then + echo 'Образ не найден.' + exit 1 + fi + + echo "Выполняется обновление приложения $1..." + + upgradeOneService passbolt + + echo "Обновление приложения $1 до версии $NEW_VERSION выполнено." + ;; + *) + usage + ;; +esac + +docker image prune -af > /dev/null 2>&1 \ No newline at end of file