Jenkins+docker发布Springbot服务的实现
短信预约 -IT技能 免费直播动态提醒
一.开发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