docker-compose如何单独更新某个服务

 更新时间:2024年05月17日 15:32:44   作者:simplefanC  
这篇文章主要介绍了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中的服务

由于服务每次重启更新都要改配置文件,手动输入多个命令执行,操作繁琐,为了提升工作效率,现在使用脚本进行升级,减少升级时间。

注意:

由于脚本是基于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

用法

脚本有两个参数,第一个参数为服务名,第二个参数为镜像版本号,其中服务名为必填项,版本号不是必填项,当版本号为空时,用本地镜像重启,当版本号不为空时,用指定的版本号重启。

  • 不传参数时提示:
[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挂载的目录无法读写问题

    解决docker挂载的目录无法读写问题

    这篇文章主要介绍了解决docker挂载的目录无法读写问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 教你使用docker安装elasticsearch和head插件的方法

    教你使用docker安装elasticsearch和head插件的方法

    这篇文章主要介绍了docker安装elasticsearch和head插件,安装时需要下载镜像和修改系统参数,本文分流程给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • Linux环境docker部署Firefox结合内网穿透远程使用浏览器测试的示例详解

    Linux环境docker部署Firefox结合内网穿透远程使用浏览器测试的示例详解

    在Docker中打开Firefox意味着我们将在一个Docker容器中运行Firefox浏览器,这对于一些特殊的测试场景非常有用,例如需要在不同版本的浏览器中进行测试,下面是一个简单的示例,演示如何在Docker中打开Firefox,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • docker-compose部署mysql全过程

    docker-compose部署mysql全过程

    这篇文章主要介绍了docker-compose部署mysql全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2016-06-06
  • 理解Docker(2):Docker 镜像详细介绍

    理解Docker(2):Docker 镜像详细介绍

    这篇文章主要介绍了理解Docker(2):Docker 镜像详细介绍, 镜像(image)是动态的容器的静态表,有需要的可以了解下。
    2016-11-11
  • Docker容器日志查看与清理的方法(亲测有效)

    Docker容器日志查看与清理的方法(亲测有效)

    这篇文章主要介绍了Docker容器日志查看与清理的方法(亲测有效),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境的详细教程

    基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境的详细教程

    K8S全称是Kubernetes,是一个全新的基于容器技术的分布式架构领先方案,这篇文章主要介绍了基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇),对docker K8S持续集成交付环境相关知识感兴趣的朋友一起看看吧
    2021-05-05
  • Docker堆栈的管理操作详解

    Docker堆栈的管理操作详解

    这篇文章主要介绍了Docker堆栈的管理操作,结合实例形式分析了Docker堆栈管理相关的新服务添加、部署、数据持久化等操作技巧与注意事项,需要的朋友可以参考下
    2018-06-06
  • docker内的容器如何与宿主机共享IP的方法

    docker内的容器如何与宿主机共享IP的方法

    本文主要介绍了docker内的容器如何与宿主机共享IP的方法,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • docker创建mongodb数据库容器的方法

    docker创建mongodb数据库容器的方法

    本文将通过docker创建一个mongodb数据库容器,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03

最新评论