微服务框架(二十一)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}'
相关文章
|
1天前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(下)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
19 1
|
4天前
|
存储 测试技术 文件存储
【Docker项目实战】使用Docker部署Sun-Panel导航面板
【4月更文挑战第19天】使用Docker部署Sun-Panel导航面板
54 7
|
6天前
|
存储 运维 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第18天】 在现代微服务架构中,Docker容器已成为部署和运行应用的标准环境。随之而来的挑战是如何有效监控这些容器的性能与健康状况,确保系统的稳定性和可靠性。本文将探讨构建一个高效稳定的Docker容器监控体系的关键技术和方法,包括日志管理、性能指标收集以及异常检测机制,旨在为运维人员提供实用的指导和建议。
11 0
|
7天前
|
测试技术 Linux 网络安全
【好玩的开源项目】使用Docker部署SyncTV视频同步和共享平台
【4月更文挑战第16天】使用Docker部署SyncTV视频同步和共享平台
44 1
|
11天前
|
测试技术 Linux 数据安全/隐私保护
【Docker项目实战】使用Docker部署Seatsurfing预订座位系统
【4月更文挑战第12天】使用Docker部署Seatsurfing预订座位系统
36 3
|
14天前
|
JavaScript 前端开发 Docker
全栈开发实战:结合Python、Vue和Docker进行部署
【4月更文挑战第10天】本文介绍了如何使用Python、Vue.js和Docker进行全栈开发和部署。Python搭配Flask创建后端API,Vue.js构建前端界面,Docker负责应用的容器化部署。通过编写Dockerfile,将Python应用构建成Docker镜像并运行,前端部分使用Vue CLI创建项目并与后端交互。最后,通过Nginx和另一个Dockerfile部署前端应用。这种组合提升了开发效率,保证了应用的可维护性和扩展性,适合不同规模的企业使用。
|
15天前
|
Linux Docker 容器
docker 容器常用命令
docker 容器常用命令
13 0
|
15天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
26 0
|
15天前
|
存储 Linux Shell
centos 部署docker容器 安装 、基本使用方法(一)
centos 部署docker容器 安装 、基本使用方法(一)
27 0
|
4天前
|
敏捷开发 监控 数据管理
构建高效微服务架构的五大关键策略
【4月更文挑战第20天】在当今软件开发领域,微服务架构已经成为一种流行的设计模式,它允许开发团队以灵活、可扩展的方式构建应用程序。本文将探讨构建高效微服务架构的五大关键策略,包括服务划分、通信机制、数据管理、安全性考虑以及监控与日志。这些策略对于确保系统的可靠性、可维护性和性能至关重要。

热门文章

最新文章