前置文档
本文档是在下述文档的基础上修改的,请先阅读一下文档
方式一:直接将jar打包成镜像
说明
更适合云原生环境。
jenkins将jar包和dockerfile推动到目标服务器(/opt/test);目标服务器上的docker 使用这两个文件构建新的镜像;docker使用新镜像启动容器。
原理
准备具有Docker环境的服务器;
准备dockerfile(基于官方jdk环境的)
// 基于官方jdk8的镜像
From openjdk:8
//开放端口
EXPOSE 8080
//指定工作目录
WORKDIR /root
//添加文件
ADD jarfile/Demo*.jar /root/app.jar
ENTRYPOINT [“java”, “ -jar”, “/root/app.jar”]
构建镜像
docker build -t demo .
运行镜像,生成容器
docker run -d --name demo -p 8080:8080 demo
步骤
1.在项目源码中创建dockerfile文件
From openjdk:8
EXPOSE 8080
WORKDIR /opt/test
ADD ./DemoApplication-*.jar /root/app.jar
ENTRYPOINT ["java", "-jar", "/root/app.jar"]
2. Jenkins配置新的SSH服务器
有docker环境的
3. Jenkins配置Pre Steps
清理docker中已构建的项目。
rm -rf /opt/test/*
docker stop DemoApp
docker rm DemoApp
docker rmi demo-app-image
4. Jenkins配置 Post Steps
配置2个transfer set(一个传输jar,一个传输dockerfile),第一个transfer set的命令置空,第二个transfer set配置命令。
docker build -t demo-app-image /opt/test
docker run -d -p 8080:8080 --name DemoApp demo-app-image
方式二:外挂目录
说明
是最简单的方式,适合团队人数不多、项目不大的情况。
这种方式的工作原理是:创建一个包含jdk的docker镜像;在宿主机的目录里存放要运行的jar包;将docker镜像挂着此目录。jenkins将jar包传输到宿主机的目录中,docker启动镜像,创建容器。
步骤
1. 在服务器上手动创建容器
将jar包手动传输到/opt/test2目录下,执行以下命令
docker run -d -p 8090:8080 --name DemoApp2 -v /opt/test2/DemoApplication-1.0-SNAPSHOT.jar:/app.jar openjdk:8 java -jar app.jar
2. Jenkins设置Pre Steps
清理docker中已构建的项目。
rm -rf /opt/test2/*
docker stop demo-v1
3. Jenkins设置Post Steps
修改执行命令
docker start DemoApp2