微服务框架(二十一)Piplin 持续部署 Docker 容器

简介: 此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。本文为使用Piplin 持续部署 Docker 容器

  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。

  本文为使用Piplin 持续部署 Docker 容器

本系列文章中所使用的框架版本为Spring Boot 2.0.3-RELEASE,Spring 5.0.7-RELEASE,Dubbo 2.6.2。

docker镜像标签、git标签、构建产物版本 应严格保持一致

Piplin

Piplin是一款免费、开源的持续集成系统,适用于软件的自动化构建、测试和部署相关的各种应用场景。

在这里插入图片描述

主要功能见Piplin

部署流程

  1. 创建项目路径(构建服务器和部署服务器)
  2. 配置项目详情及代码仓库
  3. 部署服务器配置部署公钥
  4. gitlab设置钩子通过标签事件触发构建计划

详见piplin部署流程

构建计划

在这里插入图片描述

docker镜像部署不依赖构建产物,构建计划目的为在部署时使用构建产物的标签
目前产物定义为tar包,目的为方便确认该构建计划的源代码

  1. 打包

    tar zcvf generic.tar.gz ./* --exclude=generic.tar.gz --exclude=.git
    
  2. 导出tar包(勾选出品定义)

    echo "导出tar包"
    

部署计划

在这里插入图片描述

构建产物版本必须与docker镜像标签一致

  1. 从镜像仓库拉取镜像

    sudo docker pull dubbo/generic:{
         
         {
         
          build_release }}
    
  2. 删除旧容器

    if sudo docker ps -a | grep generic-reference; then
     sudo docker rm -f generic-reference
    fi
    
  3. 获取服务器内网IP,并启动新容器

    ip=$(/sbin/ip addr | grep inet | grep -v inet6 | grep eth0 | awk -F ' ' '{print \$2}' | awk -F '/' '{print \$1}')
    sudo docker run -d --name generic-reference --net dubbo -e DUBBO_IP_TO_REGISTRY=$ip -e DUBBO_PORT_TO_REGISTRY=9799 -e JVM="-Xms128m -Xmx128m -Xmn48m" -p 9799:9799 -p 9800:9800 -p 22899:22899 --cpuset-cpus="1" --entrypoint="/setup/deploy.sh" dubbo/generic:{
         
         {
         
          build_release }} --spring.profiles.active=dev
    

容器启动时,程序服务注册需要使用IP。获取服务器内网网卡IP可使用 带绝对路径及转义的命令 或 共享脚本文件

带绝对路径及转义的命令

piplin bash脚本中无法直接使用ip命令,否则会找不到ip命令,需使用带绝对路径的命令或配置环境变量(定时脚本亦可能出现此情况)

bash: line 5: ip: command not found

带绝对路径的命令

/sbin/ip addr

awk命令使用变量需转义(猜测piplin处理bash脚本时涉及到字符串拼接的操作)

awk -F ' ' '{print \$2}'

共享脚本文件

可通过共享文件,共享获取IP的脚本文件getIp.sh以获取内网网卡IP

getIp.sh

/sbin/ip addr | grep inet | grep -v inet6 | grep eth0 | awk -F ' ' '{print $2}' | awk -F '/' '{print $1}'
相关文章
|
4月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
457 6
|
4月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
636 5
|
5月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
6月前
|
运维 持续交付 开发者
Docker:重塑现代应用开发的容器革命
Docker:重塑现代应用开发的容器革命

热门文章

最新文章