我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Jenkins+docker发布Springbot服务的实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Jenkins+docker发布Springbot服务的实现

一.开发Springbot应用

新建多个环境的配置文件

bootstrap.yaml

 通过变量获取不同环境active 

bootstrap-dev.yml

 bootstrap-pre.yaml

预发布及生产环境配置文件走nacos

二.配置docker

新增Dockerfile文件

Dockerfile内容

# Docker image for springboot file run
# VERSION 0.0.1
# Author: eangulee
# 基础镜像使用java
FROM openjdk:8
# 作者
MAINTAINER qql <xxx@qq.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 将jar包添加到容器中并更名为app.jar
ARG JAR_FILE
ADD target/cdc-0.0.1-SNAPSHOT.jar /app.jar #替换成你项目打包后的文件名称
#配置项目端口
EXPOSE 8020
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=${env}"] #通过变量传递不同的环境

在服务器项目下新增docker-composer.yaml文件 ,不要放在代码版本库

version: '3'
services:
  project-demo:
    container_name: cdcd-demo #自定义容器名称
    image: qql/cdcd:0.0.1 #镜像名称
    restart: always
    environment:
      env: dev #环境,不同环境使用不同环境名称
    volumes:
      # 同步时间
      - /etc/localtime:/etc/localtime:ro
      # 如果项目有些日志或者写文件,需要同步到宿主机器,也需要定义相应的卷
#      - ./data:/etc/project-demo/data
#      - ./log:/etc/project-demo/log
    ports:
      - 8080:8020

三.配置Jenkins

新增部署shell脚本

#!/bin/bash 
echo "当前位置"
pwd
 
mvn clean package -Dmaven.test.skip=true
#切换到项目目录
cd cdc
pwd
#获取最新版本tag
LatestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
echo -e "最新版本tag......"
echo -e "$LatestTag"
echo -e "镜像地址"
 
 
#获取本机IP
local_ip=`ifconfig eth0 | grep 'inet' | awk '{print $2}' | sed -e "s/addr\://"`
echo ${local_ip}
#制作docker镜像
docker build  -f Dockerfile -t qql/cdc:1.0 .
echo "制作成功"
cd ../docker
pwd
#根据docker-composer.yaml文件新建获取重新构建docker容器
docker-compose -f docker-composer.yaml -p cdc up -d
step=1 #间隔的秒数,不能大于60
content=""
 
for (( i = 0; i < 60; i=(i+step) )); do
status_code=$(curl -I -m 10 -o /dev/null -s -w %{http_code}  127.0.0.1:8080/index/index) #访问服务一个接口验证容器是否启动
echo $status_code
if [ $status_code != 200 ]; then
  sleep $step
  echo "服务还没有启动,耗时"$i"秒"
else
  echo "服务已经启动,耗时"$i"秒"
  break
fi
 
if [ $i == 59 ]; then
  echo "启动失败"
  exit -1
fi
done
 
{
  docker rmi `docker images | grep none | awk '{print $3}'` && /
 
} || {
  echo 'delete null images error(不需要处理)'
}

 保存,则就可以执行部署

到此这篇关于Jenkins+docker发布Springbot服务的实现的文章就介绍到这了,更多相关Jenkins+docker发布Springbot内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Jenkins+docker发布Springbot服务的实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Jenkins+docker发布Springbot服务的实现

本文主要介绍了Jenkins+docker发布Springbot服务的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-09

怎么用Jenkins+docker发布Springbot服务

这篇文章主要介绍了怎么用Jenkins+docker发布Springbot服务的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用Jenkins+docker发布Springbot服务文章都会有所收获,下面我们
2023-07-05

使用Jenkins+docker打包部署后端服务的实现

本文主要介绍了使用Jenkins+docker打包部署后端服务的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2022-11-13

Docker如何安装jenkins实现微服务多模块打包

这篇文章主要介绍“Docker如何安装jenkins实现微服务多模块打包”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Docker如何安装jenkins实现微服务多模块打包”文章能帮助大家解决问题。
2023-07-02

Docker与Nginx结合实现网站灰度发布(如何利用Docker和Nginx实现网站的灰度发布?)

利用Docker和Nginx,可实现网站灰度发布。首先构建新旧版本容器镜像。部署旧版本,配置Nginx代理。随后部署新版本,修改Nginx配置路由部分流量。测试新版本,逐步增加流量。当新版本稳定后,完全切换。Docker灰度发布优势包括隔离性、可移植性、可扩展性和自动化。最佳实践包括谨慎监控、明确回滚策略、逐步增加流量和全面测试。
Docker与Nginx结合实现网站灰度发布(如何利用Docker和Nginx实现网站的灰度发布?)
2024-04-02

基于Docker的Consul集群实现服务发现

服务发现其实简单说,服务发现就是解耦服务与IP地址之间的硬绑定关系,以典型的集群为例,对于集群来说,是有多个节点的,这些节点对应多个IP(或者同一个IP的不同端口号),集群中不同节点责任是不一样的。比如说一个数据集群中,可以分为读节点或者写节点,写节点和读节点
基于Docker的Consul集群实现服务发现
2015-11-26

Nginx与Docker Swarm的服务发现与负载均衡(Docker Swarm如何实现Nginx的服务发现与负载均衡?)

Nginx与DockerSwarm集成实现服务发现和负载均衡。Swarm通过Consul进行服务发现,Nginx查询Consul获取容器信息并将其添加到上游服务器列表中。标签可用于更细粒度的选择,而upstream模块处理负载均衡,提供轮询、最少连接和IP哈希等策略以及健康检查。此配置简化了容器管理,提高了高可用性,并通过灵活的负载均衡策略优化了应用程序的性能。
Nginx与Docker Swarm的服务发现与负载均衡(Docker Swarm如何实现Nginx的服务发现与负载均衡?)
2024-04-02

使用Docker Compose、Nginx和MariaDB实现PHP应用程序的灰度发布

灰度发布是一种软件发布的策略,通过在生产环境中逐步引入新版本,来缓解发布带来的风险。在实际应用中,我们可以通过使用Docker Compose来管理容器化的应用程序,结合Nginx负载均衡和MariaDB来实现灰度发布。Docker Com
2023-10-21

c#项目实现发布到服务器全过程

这篇文章主要介绍了c#项目实现发布到服务器全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-15

编程热搜

目录