前提条件
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:8MAINTAINER polaris <450733605@qq.com>VOLUME /tmpARG JAR_FILECOPY ${JAR_FILE} app.jarENTRYPOINT ["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 mvnmvn 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
