85 lines
2.5 KiB
Bash
85 lines
2.5 KiB
Bash
#!/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 |