docker-compose如何單獨(dú)更新某個(gè)服務(wù)
docker-compose單獨(dú)更新某個(gè)服務(wù)
假設(shè)有一服務(wù)名為AAA(基于鏡像AAA)
步驟
- 更新鏡像
docker build -t AAA
- stop容器
docker-compose stop AAA
- 刪除容器
docker-compose rm -f AAA
- 基于更新后的鏡像重新啟動(dòng)容器
docker-compose up AAA -d
通過(guò)腳本更新docker-compose中的服務(wù)
由于服務(wù)每次重啟更新都要改配置文件,手動(dòng)輸入多個(gè)命令執(zhí)行,操作繁瑣,為了提升工作效率,現(xiàn)在使用腳本進(jìn)行升級(jí),減少升級(jí)時(shí)間。
注意:
由于腳本是基于docker-compose,所以腳本的目錄與docker-compose.yml必須放在同一個(gè)目錄下,否則無(wú)法使用。
腳本內(nèi)容
#!/bin/bash
app_name="$1"
version="$2"
apps=(
blade-admin
blade-turbine
blade-zipkin
lecent-park
lecent-pay
blade-gateway
blade-auth
blade-log
blade-desk
blade-user
lecent-process
blade-system
blade-resource
lecent-battery
lecent-community
lecent-convenience
lecent-device
lecent-operate
lecent-cabinet
lecent-trash
lecent-door
lecent-mall
lecent-terminal
lecent-open-vidu
leliven-stand-mall
)
#用已有鏡像重啟
restart(){
docker-compose stop $app_name
echo '----------容器已停止------------'
echo yes | docker-compose rm $app_name
echo '----------容器已刪除------------'
docker-compose up -d $app_name
echo '----------容器重啟成功----------'
docker-compose logs -f $app_name
}
#獲取新的鏡像并重啟
pull_image_restart(){
echo '------------開(kāi)始停止容器---------'
docker-compose stop $app_name
echo '----------容器已停止------------'
echo '-----------開(kāi)始刪除容器----------'
echo yes | docker-compose rm $app_name
echo '-----------容器已刪除-----------'
imageName=harbor.lecent.cn/blade/$app_name:$version;
docker rmi $imageName;
echo '-----------鏡像已刪除-----------';
echo '-------開(kāi)始替換docker-compose.yml對(duì)應(yīng)服務(wù)的版本號(hào)'
old_version=harbor.lecent.cn/blade/$app_name.*
new_version=harbor.lecent.cn/blade/$app_name:$version'"'
sed -i "s|$old_version|$new_version|g" docker-compose.yml
echo '-------------docker-compose.yml---版本替換成功'
echo '----------獲取新的鏡像并重啟------------'
docker-compose up -d $app_name
echo '----------容器重啟成功----------'
docker-compose logs -f $app_name
}
if [ ! -n "$1" ] ;then
echo "服務(wù)名不能為空,請(qǐng)傳入服務(wù)名!"
exit
elif [ ! -n "$2" ] ;then
if [[ ! "${apps[@]}" =~ "${1}" ]]; then
echo "服務(wù):[$1] 不存在,請(qǐng)檢查后重試! "
exit
fi
echo "服務(wù)名:["${app_name}"],用已有鏡像重啟"
restart
else
if [[ ! "${apps[@]}" =~ "${1}" ]]; then
echo "服務(wù):[$1] 不存在,請(qǐng)檢查后重試! "
exit
fi
echo "服務(wù)名:["${app_name}"],版本號(hào):["${version}"],使用版本["${version}"]重啟"
pull_image_restart
fi用法
腳本有兩個(gè)參數(shù),第一個(gè)參數(shù)為服務(wù)名,第二個(gè)參數(shù)為鏡像版本號(hào),其中服務(wù)名為必填項(xiàng),版本號(hào)不是必填項(xiàng),當(dāng)版本號(hào)為空時(shí),用本地鏡像重啟,當(dāng)版本號(hào)不為空時(shí),用指定的版本號(hào)重啟。
- 不傳參數(shù)時(shí)提示:
[root@node12 docker]# sh restart-compose.sh 服務(wù)名不能為空,請(qǐng)傳入服務(wù)名!
- 當(dāng)服務(wù)名不存在時(shí)提示:
[root@node12 docker]# sh restart-compose.sh 111 服務(wù):[111] 不存在,請(qǐng)檢查后重試!
- 重啟某個(gè)服務(wù):
[root@node12 docker]# sh restart-compose.sh lecent-park 服務(wù)名:[lecent-park],用已有鏡像重啟
- 以指定的版本重啟服務(wù):
[root@node12 docker]# sh up-d.sh lecent-park 1.0.6 服務(wù)名:[lecent-park],版本號(hào):[1.0.6],使用版本[1.0.6]重啟
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker prune命令可定時(shí)清理不常用數(shù)據(jù)的實(shí)現(xiàn)
磁盤(pán)使用過(guò)久就會(huì)導(dǎo)致磁盤(pán)空間越來(lái)越小,這時(shí)候就需要?jiǎng)h除不相關(guān)的數(shù)據(jù)來(lái)釋放磁盤(pán)空間,本文主要使用docker prune命令可定時(shí)清理不常用數(shù)據(jù)的實(shí)現(xiàn),感興趣的可以了解一下2021-10-10
Docker命令讓普通用戶能夠執(zhí)行的實(shí)現(xiàn)
這篇文章主要介紹了Docker命令讓普通用戶能夠執(zhí)行的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
docker實(shí)踐之容器的導(dǎo)入與導(dǎo)出
Docker技術(shù)為IT界帶來(lái)了巨大的改變,它使得云服務(wù)可以用來(lái)共享應(yīng)用和工作流程自動(dòng)化,使得應(yīng)用可以用組件快速組合,消除了開(kāi)發(fā)、品質(zhì)保證、產(chǎn)品環(huán)境間的摩擦。這篇文章我們將詳細(xì)的介紹docker容器的導(dǎo)入與導(dǎo)出,感興趣的朋友們下面來(lái)一起看看吧。2016-10-10
win10環(huán)境下安裝Docker的實(shí)現(xiàn)
這篇文章主要介紹了win10環(huán)境下安裝Docker的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
國(guó)內(nèi)最新可用Docker鏡像源網(wǎng)址與配置方法(全網(wǎng)最全)
使用國(guó)內(nèi)鏡像源可以大幅提升鏡像拉取速度,減少網(wǎng)絡(luò)波動(dòng),幫助初學(xué)者快速上手Docker,本文將詳細(xì)介紹國(guó)內(nèi)最熱門(mén)的Docker鏡像源平臺(tái),希望對(duì)大家有所幫助2025-06-06
docker mysql鏡像因?yàn)榕渲梦募霈F(xiàn)錯(cuò)誤一直提示重啟的解決
這篇文章主要介紹了docker mysql鏡像因?yàn)榕渲梦募霈F(xiàn)錯(cuò)誤一直提示重啟的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
使用minikube安裝使用單機(jī)版K8S方式(docker)
本文介紹了如何在centos7上使用minikube快速搭建單機(jī)版k8s,主要步驟包括:下載kubectl和docker,創(chuàng)建新用戶,下載和安裝minikube,驗(yàn)證安裝情況,最后,通過(guò)執(zhí)行minikube和minikubestop啟停K8s,或使用minikubedelete徹底刪除K8S的數(shù)據(jù)2024-10-10
docker搭建odoo16開(kāi)發(fā)環(huán)境的實(shí)現(xiàn)
Odoo是全球流行的開(kāi)源企業(yè)管理套件,本文主要介紹了docker搭建odoo16開(kāi)發(fā)環(huán)境的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04

