利用dockerfile-maven-plugin插件在springboot中上传镜像到远程仓库
这篇文章讲解在开发工具中把打包好的jar编译成docker镜像,上传到远程的docker服务器,以及根据镜像创建测试docker容器,验证springboot程序,以及Dockerfile配置
如何生成证书以及docker服务器开启远程端口,参考这篇文章:
https://blog.youkuaiyun.com/qq_21187515/article/details/90262324
- windows下配置环境变量
增加三个系统环境变量,在环境变量->系统变量->新建
DOCKER_HOST=tcp://192.168.74.82:2376
DOCKER_CERT_PATH=证书路径
DOCKER_TLS_VERIFY=1
备注:
1)证书路径目录下面有三个证书文件 ca.pem、cert.pem、key.pem
2)DOCKER_HOST中的ip是docker服务器的ip
注:改了系统环境变量,我们的编译器要关闭后重新启动,否则这环境变量没有生效,按下面的推送操作到仓库会报错:错误信息大概是ssl认证失败,提示java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: javax.net.ssl.SSLException,这时重启即可解决
2.springboot项目使用dockerfile-maven-plugin插件
pom.xml文件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.3</version>
<!--<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>-->
<configuration>
<repository>121.42.162.203:5000/${project.artifactId}</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
<JAR_EXPOSE>8082</JAR_EXPOSE>
</buildArgs>
</configuration>
</plugin>
注:
1.repository属性里的ip要修改成自己的docker私有仓库ip和端口号
2.如果还没有搭建docker仓库的话,参考:docker私有仓库搭建
springboot项目的根目录新建Dockerfile文件,复制下面的代码
FROM openjdk:8-jre
ARG JAR_EXPOSE=8082
EXPOSE $JAR_EXPOSE
ARG JAR_FILE
ADD $JAR_FILE /app.jar
ENTRYPOINT ["java", "-jar", "-Duser.timezone=GMT+08", "/app.jar"]
-
执行maven命令上传镜像
mvn clean package dockerfile:build dockerfile:push -Dmaven.test.skip=true
注:
1.上面的dockerfile:build dockerfile:push的意思是build先上传项目在docker守护进程的服务器生成镜像,push推送镜像到docker的私有仓库
2. -Dmaven.test.skip=true的意思是跳过测试用例
3. 不想执行上面的maven命令的话,也可以直接在dockerfile的插件上先双击dockerfile:build,再双击dockerfile:push
-
maven命令成功执行后可以在docker服务器看到镜像 docker images
-
在docker的私有仓库可以看到镜像已经推到仓库
-
docker run这个springboot编译的docker镜像
docker run --name countgame -d -p 8082:8082 6f0d
注:后面的6f0d是image_id,在docker images的后面可以看到
- docker ps可以看到容器已经启动
- 查看容器启动日志,日志正常
docker logs --tail 300 -f countgame
- 用curl测试程序是否正常,可以看到有内容返回,返回的网页正常
curl http://127.0.0.1:8082/countgame/user/toGame
注:
1.修改了系统变量需要重启开发工具才能生效,一开始提示上传镜像失败,看了错误是上传的ip还是默认的127.0.0.1,重启IDEA或者eclipse就可以了