springboot docker jenkins 自动化部署并上传镜像的步骤详解
作者:言雨生百谷 时间:2023-07-28 01:54:38
springboot + docker + jenkins自动化部署项目,jenkins、mysql、redis都是docker运行的,并且没有使用虚拟机,就在阿里云服务器(centos7)运行
1、前期准备工作不说了
2、在项目根目录下新建Dockerfile
Dockerfile文件内容为:
#基础镜像
FROM openjdk:12
#作者
MAINTAINER demo <demo@qq.com>
VOLUME /tmp
#指定配置文件,以及jar包在服务器上的路径
ENTRYPOINT ["java","-Dspring.profiles.active=prod","-jar","/lcy/work/tools/tools.jar"]
#暴露端口
EXPOSE 8092
3、在服务器找个目录新建一个.sh文件
#!/bin/sh
echo '================开始构建镜像=============='
#镜像名称
IMAGE_NAME='registry.cn-beijing.aliyuncs.com/???/tools'
#打包后在jenkins的地址
SOURCE_PATH='/lcy/jenkins/workspace/tools'
#Dockerfile执行jar包的地址
BASE_PATH='/lcy/work/tools'
echo IMAGE_NAME=$IMAGE_NAME
echo '================复制JAR包==================='
echo $SOURCE_PATH/target/tools-0.0.1-SNAPSHOT.jar
cp $SOURCE_PATH/target/tools-0.0.1-SNAPSHOT.jar $BASE_PATH/tools.jar
chmod -R 777 $BASE_PATH/tools.jar
echo '================复制完成===================='
echo '================当前docker版本=============='
docker -v
echo '================构建镜像开始================'
docker build -t $IMAGE_NAME -f $SOURCE_PATH/Dockerfile .
echo '================构建镜像结束================'
#输入要推送镜像的地址,根据镜像仓库提示的地址复制
echo '================推送镜像开始================'
docker login --username=??? --password=??? registry-vpc.cn-beijing.aliyuncs.com
docker push $IMAGE_NAME
echo '================推送镜像结束================'
echo '================获取容器id=================='
CID=$(docker ps | grep "$IMAGE_NAME" | awk '{print $1}')
echo 容器id=$CID
echo '================获取镜像id=================='
IID=$(docker images | grep "$IMAGE_NAME" | awk '{print $3}')
echo 镜像id=$IID
if [ -n "$CID" ]; then
echo 存在$IMAGE_NAME容器,停止容器并删除
docker stop tools
docker rm tools
else
echo 不存在$IMAGE_NAME容器,开始启动
docker run -p 8092:8092 -d --name tools -v $BASE_PATH:$BASE_PATH $IMAGE_NAME
fi
4、配置jenkins,执行新建的.sh文件(记得给好权限)其它的配置就不说了,比如github的配置
5、运行结果
本文由博客一文多发平台 OpenWrite 发布!
来源:http://www.cnblogs.com/hy5424/p/12818682.html
标签:springboot,docker,jenkins,自动化部署
0
投稿
猜你喜欢
HashMap 和 Hashtable的区别
2022-11-01 06:34:47
Jsoup解析html实现招聘信息查询功能
2022-01-08 19:38:07
C#创建安全的栈(Stack)存储结构
2021-11-21 08:01:33
C#函数out多个返回值问题
2022-11-14 21:58:55
Android利用GridView实现单选效果
2022-08-12 03:31:50
MyBatis逆向⼯程的生成过程
2023-11-28 17:29:22
python gstreamer实现视频快进/快退/循环播放功能
2022-07-06 10:09:20
关于Java中BeanMap进行对象与Map的相互转换问题
2023-09-18 07:25:36
Ireport的安装与使用教程
2021-08-08 00:16:43
Android实现悬浮窗效果
2022-08-17 05:59:40
深入探讨C#中的const、readonly关键字
2023-01-20 23:42:25
Java GZIP压缩与解压缩代码实例
2023-11-20 15:57:17
C#使用protobuf-net进行序列化的详细操作
2021-11-17 02:32:41
Java内存模型中的虚拟机栈原理分析
2022-02-08 04:41:33
Android Studio中生成aar文件及本地方式使用aar文件的方法
2022-06-14 23:43:59
c# wpf使用GMap.NET类库,实现地图轨迹回放
2023-04-20 06:46:27
Java 切割字符串的几种方式集合
2023-12-19 00:02:04
移动开发Spring Boot外置tomcat教程及解决方法
2023-08-25 11:47:33
JAVA抽象类,接口,内部类详解
2023-11-09 16:37:25
IDEA 热部署设置(JRebel插件激活)
2021-08-25 08:14:39