前提条件

mvn运行在Docker环境下,如果使用的是Windows系统,可以通过安装Docker Community Edition for Windows(Win10 专业版/企业版)或Docker Toolbox(Win7,Win8,Win10其他版本)来使用Docker。

添加插件支持

(1)配置pom.xml的properties节点。

  1. <properties>
  2. <java.version>1.8</java.version>
  3. <!-- Docker镜像前缀 -->
  4. <docker.image.prefix>springboot</docker.image.prefix>
  5. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  6. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  7. <!-- 监听端口 -->
  8. <server.port>7000</server.port>
  9. <!-- 镜像仓库前缀 -->
  10. <docker.repostory>registry.cn-qingdao.aliyuncs.com</docker.repostory>
  11. <!-- 命名空间 -->
  12. <docker.registry.name>polaris-docker</docker.registry.name>
  13. </properties>

(2)在plugins中添加docker构建插件(dcoker-maven-plugin)。

  1. <plugin>
  2. <groupId>com.spotify</groupId>
  3. <artifactId>docker-maven-plugin</artifactId>
  4. <version>1.1.1</version>
  5. <configuration>
  6. <forceTags>true</forceTags>
  7. <pushImage>true</pushImage>
  8. <buildArgs>
  9. <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
  10. </buildArgs>
  11. <!-- 镜像名称 -->
  12. <imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version}</imageName>
  13. <!-- 指定Dockerfile所在的路径 -->
  14. <dockerDirectory>src/main/docker</dockerDirectory>
  15. <!-- TAG,这里用工程版本号 -->
  16. <imageTags>
  17. <imageTag>${project.version}</imageTag>
  18. </imageTags>
  19. <!-- 指定推送的镜像 -->
  20. <!--<dockerHost>https://tyhbjv3j.mirror.aliyuncs.com</dockerHost>-->
  21. <resources>
  22. <resource>
  23. <targetPath>/</targetPath>
  24. <directory>${project.build.directory}</directory>
  25. <include>${project.build.finalName}.jar</include>
  26. </resource>
  27. </resources>
  28. <!-- 推送阿里云相关 -->
  29. <serverId>docker-aliyun</serverId>
  30. <!-- 表示阿里云的docker仓库地址。阿里云的容器镜像服务地址 -->
  31. <registryUrl>${docker.repostory}</registryUrl>
  32. <!-- 表示推送镜像到仓库 -->
  33. <pushImage>true</pushImage>
  34. </configuration>
  35. </plugin>

Dockerfile编写

Dockerfile文件请按照pom.xml中的dockerDirectory节点配置进行存放。

  1. FROM java:8
  2. MAINTAINER polaris <450733605@qq.com>
  3. VOLUME /tmp
  4. ARG JAR_FILE
  5. COPY ${JAR_FILE} app.jar
  6. ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  7. EXPOSE 8080

构建镜像

  1. Maven配置文件settings.xml添加远程仓库:
  1. <server>
  2. <!-- maven的pom中可以根据这个id找到这个server节点的配置,此处id需要与pom中的serverId保持一致 -->
  3. <id>docker-aliyun</id>
  4. <!-- 这里是在阿里云注册的账号 -->
  5. <username>账号(请替换)</username>
  6. <!-- 这里是在阿里云注册的密码(镜像仓库密码) -->
  7. <password>密码(请替换)</password>
  8. <configuration>
  9. <!-- 这是在阿里云注册时填写的邮箱 -->
  10. <email>450733605@qq.com</email>
  11. </configuration>
  12. </server>

Maven构建(构建并推送镜像到远程阿里云镜像仓库):

  1. # 查看并确认Maven版本
  2. where mvn
  3. mvn clean package docker:build -DpushImage -DskipTests -Dfast

远程镜像拉取

  1. docker pull ${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version

参考

SpringBoot打包成Docker镜像并且上传到Docker仓库(阿里云容器镜像服务):
https://blog.csdn.net/qq_31800623/article/details/86766618