前提条件
mvn运行在Docker环境下,如果使用的是Windows系统,可以通过安装Docker Community Edition for Windows(Win10 专业版/企业版)或Docker Toolbox(Win7,Win8,Win10其他版本)来使用Docker。
添加插件支持
(1)配置pom.xml的properties节点。
<properties>
<java.version>1.8</java.version>
<!-- Docker镜像前缀 -->
<docker.image.prefix>springboot</docker.image.prefix>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 监听端口 -->
<server.port>7000</server.port>
<!-- 镜像仓库前缀 -->
<docker.repostory>registry.cn-qingdao.aliyuncs.com</docker.repostory>
<!-- 命名空间 -->
<docker.registry.name>polaris-docker</docker.registry.name>
</properties>
(2)在plugins中添加docker构建插件(dcoker-maven-plugin)。
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<forceTags>true</forceTags>
<pushImage>true</pushImage>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
<!-- 镜像名称 -->
<imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version}</imageName>
<!-- 指定Dockerfile所在的路径 -->
<dockerDirectory>src/main/docker</dockerDirectory>
<!-- TAG,这里用工程版本号 -->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<!-- 指定推送的镜像 -->
<!--<dockerHost>https://tyhbjv3j.mirror.aliyuncs.com</dockerHost>-->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!-- 推送阿里云相关 -->
<serverId>docker-aliyun</serverId>
<!-- 表示阿里云的docker仓库地址。阿里云的容器镜像服务地址 -->
<registryUrl>${docker.repostory}</registryUrl>
<!-- 表示推送镜像到仓库 -->
<pushImage>true</pushImage>
</configuration>
</plugin>
Dockerfile编写
Dockerfile文件请按照pom.xml中的dockerDirectory节点配置进行存放。
FROM java:8
MAINTAINER polaris <450733605@qq.com>
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
EXPOSE 8080
构建镜像
Maven配置文件settings.xml添加远程仓库:
<server>
<!-- maven的pom中可以根据这个id找到这个server节点的配置,此处id需要与pom中的serverId保持一致 -->
<id>docker-aliyun</id>
<!-- 这里是在阿里云注册的账号 -->
<username>账号(请替换)</username>
<!-- 这里是在阿里云注册的密码(镜像仓库密码) -->
<password>密码(请替换)</password>
<configuration>
<!-- 这是在阿里云注册时填写的邮箱 -->
<email>450733605@qq.com</email>
</configuration>
</server>
Maven构建(构建并推送镜像到远程阿里云镜像仓库):
# 查看并确认Maven版本
where mvn
mvn clean package docker:build -DpushImage -DskipTests -Dfast
远程镜像拉取
docker pull ${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version
参考
SpringBoot打包成Docker镜像并且上传到Docker仓库(阿里云容器镜像服务):
https://blog.csdn.net/qq_31800623/article/details/86766618