docker-compose如何單獨更新某個服務
docker-compose單獨更新某個服務
假設有一服務名為AAA(基于鏡像AAA)
步驟
- 更新鏡像
docker build -t AAA
- stop容器
docker-compose stop AAA
- 刪除容器
docker-compose rm -f AAA
- 基于更新后的鏡像重新啟動容器
docker-compose up AAA -d
通過腳本更新docker-compose中的服務
由于服務每次重啟更新都要改配置文件,手動輸入多個命令執(zhí)行,操作繁瑣,為了提升工作效率,現(xiàn)在使用腳本進行升級,減少升級時間。
注意:
由于腳本是基于docker-compose,所以腳本的目錄與docker-compose.yml必須放在同一個目錄下,否則無法使用。
腳本內容
#!/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 '------------開始停止容器---------'
docker-compose stop $app_name
echo '----------容器已停止------------'
echo '-----------開始刪除容器----------'
echo yes | docker-compose rm $app_name
echo '-----------容器已刪除-----------'
imageName=harbor.lecent.cn/blade/$app_name:$version;
docker rmi $imageName;
echo '-----------鏡像已刪除-----------';
echo '-------開始替換docker-compose.yml對應服務的版本號'
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 "服務名不能為空,請傳入服務名!"
exit
elif [ ! -n "$2" ] ;then
if [[ ! "${apps[@]}" =~ "${1}" ]]; then
echo "服務:[$1] 不存在,請檢查后重試! "
exit
fi
echo "服務名:["${app_name}"],用已有鏡像重啟"
restart
else
if [[ ! "${apps[@]}" =~ "${1}" ]]; then
echo "服務:[$1] 不存在,請檢查后重試! "
exit
fi
echo "服務名:["${app_name}"],版本號:["${version}"],使用版本["${version}"]重啟"
pull_image_restart
fi用法
腳本有兩個參數(shù),第一個參數(shù)為服務名,第二個參數(shù)為鏡像版本號,其中服務名為必填項,版本號不是必填項,當版本號為空時,用本地鏡像重啟,當版本號不為空時,用指定的版本號重啟。
- 不傳參數(shù)時提示:
[root@node12 docker]# sh restart-compose.sh 服務名不能為空,請傳入服務名!
- 當服務名不存在時提示:
[root@node12 docker]# sh restart-compose.sh 111 服務:[111] 不存在,請檢查后重試!
- 重啟某個服務:
[root@node12 docker]# sh restart-compose.sh lecent-park 服務名:[lecent-park],用已有鏡像重啟
- 以指定的版本重啟服務:
[root@node12 docker]# sh up-d.sh lecent-park 1.0.6 服務名:[lecent-park],版本號:[1.0.6],使用版本[1.0.6]重啟
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
教你使用docker安裝elasticsearch和head插件的方法
這篇文章主要介紹了docker安裝elasticsearch和head插件,安裝時需要下載鏡像和修改系統(tǒng)參數(shù),本文分流程給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04
Linux環(huán)境docker部署Firefox結合內網穿透遠程使用瀏覽器測試的示例詳解
在Docker中打開Firefox意味著我們將在一個Docker容器中運行Firefox瀏覽器,這對于一些特殊的測試場景非常有用,例如需要在不同版本的瀏覽器中進行測試,下面是一個簡單的示例,演示如何在Docker中打開Firefox,感興趣的朋友跟隨小編一起看看吧2024-08-08
基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持續(xù)集成交付環(huán)境的詳細教程
K8S全稱是Kubernetes,是一個全新的基于容器技術的分布式架構領先方案,這篇文章主要介紹了基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持續(xù)集成交付環(huán)境(環(huán)境搭建篇),對docker K8S持續(xù)集成交付環(huán)境相關知識感興趣的朋友一起看看吧2021-05-05
docker創(chuàng)建mongodb數(shù)據(jù)庫容器的方法
本文將通過docker創(chuàng)建一個mongodb數(shù)據(jù)庫容器,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-03-03

