项目添加dockerfile
- 在需要打包的工程的根目录添加Dockerfile文件,文件内容:
# 设置JAVA版本
FROM openjdk:8
# 指定存储卷,任何向/tmp写入的信息都不会记录到容器存储层
VOLUME /tmp# 拷贝运行JAR包
ARG JAR_FILE
COPY ${JAR_FILE} app.jar# 入口点。执行JAVA运行命令
ENV JAVA_OPTS="
-server
-Xms256m
-Xmx512m
-XX:MetaspaceSize=256m
-XX:MaxMetaspaceSize=512m"
ENTRYPOINT java ${JAVA_OPTS} -jar /app.jar - 在pom上配置,添加打包插件,buildArgs中的JAR_FILE与Dockerfile文件中的${JAR_FILE}对应
<plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.3.6</version> <configuration> <repository>${project.artifactId}</repository> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin>
将项目存放到git上
- 在gitee上新建一个仓库
- 本地项目根目录新建一个.gitignore文件,添加忽略的文件
.idea
target
*.iml - 根项目节点创建本地代码仓库,并将工程文件
- 将文件添加到本地仓库中,并commit。
- 添加远程仓库地址,输入账号密码(之前存过就不提示了)并push到远程仓库。
在jenkins上新建一个任务
-
配置全局变量
系统管理-》全局工具配置,配置好JDK、Git、Maven等 -
输入任务名称,选择构建一个自由风格的软件项目(Freestyle project)
任务名称为jar包名称(要一摸一样,且不能有大写字母) -
配置JDK
-
源码管理
- 选择"GIT"
- 填写Repository URL
- Credentials 认证信息
- Branches to build 打包分支
-
设置Build Steps
- 选择maven版本
- 设置目标
- 多子工程并且引用了其他工程,先打包应用到的项目,否者跳过
- 使用dockerfile打包,-f 的路径是指定要打包的工程的pom.xml
- 多子工程并且引用了其他工程,先打包应用到的项目,否者跳过
-
docker部署。
构建失败原因
- 镜像存在大写导致构建失败修改任务名称未小写且
- docker镜像名称要求与jar包的名字一致,否者在启动时,找不到对应的镜像
Unable to find image ‘lpsaserver_distrubuted:latest’ locally
docker: Error response from daemon: pull access denied for lpsaserver_distrubuted, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied. - dockerfile 第一行,否则报如下错误
st: 400, body: {“message”:“no build stage in current context”}: HTTP 400 Bad Request -> [1m[Help 1][m
- unmappable character for encoding ASCII可能会导致应用服务乱码,在对应项目pom的properties 添加
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
LockData.java:[13,15] unmappable character for encoding ASCII