微服务框架(二十一)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}'
相关文章
|
7天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
28 2
|
4天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
6天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
5天前
|
Cloud Native API 持续交付
云原生之旅:从容器到微服务的演进之路
【10月更文挑战第39天】在这篇文章中,我们将一起探索云原生技术的奥秘。通过浅显易懂的语言和生动的比喻,我们将了解云原生技术如何改变软件开发的世界。文章将带领读者从容器的基本概念出发,逐步深入到微服务架构的实践,揭示这些技术如何助力现代应用的快速迭代与可靠部署。准备好,让我们启程进入云原生的精彩世界吧!
|
5天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
6天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
6天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
6天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
2月前
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
|
1月前
|
安全 Shell Linux
docker进入容器命令
docker进入容器命令