Jenkins+docker发布Springbot服务的实现

 更新时间:2023年03月09日 11:02:37   作者:屈强龙  
本文主要介绍了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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker启动镜像失败后如何用日志logs查找失败原因及解决

    docker启动镜像失败后如何用日志logs查找失败原因及解决

    在使用docker的时候,在某些未知的情况下可能启动了容器,但是过了没几秒容器自动退出了,这个时候如何排查问题呢?下面这篇文章主要给大家介绍了关于docker启动镜像失败后如何用日志logs查找失败原因及解决的相关资料,需要的朋友可以参考下
    2023-05-05
  • Docker+keepalived+nginx实现主从热备的方法示例

    Docker+keepalived+nginx实现主从热备的方法示例

    这篇文章主要介绍了Docker+keepalived+nginx实现主从热备的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 解决docker安装完成报:bridge-nf-call-iptables is disabled问题

    解决docker安装完成报:bridge-nf-call-iptables is disabled问题

    这篇文章主要介绍了解决docker安装完成报:bridge-nf-call-iptables is disabled问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • docker环境中websocket 通过nginx代理不通解决方案

    docker环境中websocket 通过nginx代理不通解决方案

    这篇文章主要介绍了docker环境中websocket 通过nginx代理不通解决方案,下面是一些可能会导致 WebSocket 代理失败的问题以及相应的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • 基于docker安装tensorflow的完整步骤

    基于docker安装tensorflow的完整步骤

    TensorFlow 随着AlphaGo的胜利也火了起来。 下面这篇文章主要给大家介绍了关于基于docker安装tensorflow的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧。
    2018-02-02
  • docker registry私服搭建的方法

    docker registry私服搭建的方法

    这篇文章主要介绍了docker registry私服搭建的方法,docker官方的registry镜像分为两个版本,v2和v2以前的版本,本文将分别搭建基于SSL和登录认证的以上两个版本的docker私服
    2018-05-05
  • Ubuntu 环境下安装 Docker环境详解

    Ubuntu 环境下安装 Docker环境详解

    这篇文章主要介绍了Ubuntu 环境下安装 Docker环境详解的相关资料,需要的朋友可以参考下
    2022-10-10
  • 基于alpine用dockerfile创建的爬虫Scrapy镜像的实现

    基于alpine用dockerfile创建的爬虫Scrapy镜像的实现

    这篇文章主要介绍了基于alpine用dockerfile创建的爬虫Scrapy镜像的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Windows使用docker打开新窗口error解决办法

    Windows使用docker打开新窗口error解决办法

    这篇文章主要介绍了Windows使用docker打开新窗口error解决办法,十分简单,需要的朋友可以参考下。
    2017-09-09
  • Docker保存镜像和导入镜像文件完整图文教程

    Docker保存镜像和导入镜像文件完整图文教程

    这篇文章主要给大家介绍了关于Docker保存镜像和导入镜像文件的完整图文教程,适用于备份、迁移和版本控制等场景,文中通过代码及图文介绍的非常详细,需要的朋友可以参考下
    2024-12-12

最新评论