当前位置:   article > 正文

您知道用 Docker打包 Springboot有多少种方式?

from openjdk

一: 最基本的 Dockerfile 构建 Springboot 项目

在 pom 同目录下新建 Dockerfile

  1. FROM openjdk:8-jdk-alpine
  2. VOLUME /tmp
  3. COPY target/*.jar app.jar
  4. ENTRYPOINT ["java","-jar","/app.jar"]

将 Springboot 使用 Maven 打包,在终端中传参进去,进行构建 Images。

  1. docker build --build-arg=target/*.jar -t demo1/app .
  2. #构建完成后启动容器
  3. docker run -p 8080:8080 demo1/app

给 Springboot 启动时候传环境变量或者 shell 参数

  1. FROM openjdk:8-jdk-alpine
  2. VOLUME /tmp
  3. ARG JAR_FILE
  4. COPY ${JAR_FILE} app.jar
  5. ENTRYPOINT ["sh""-c""java ${JAVA_OPTS} -jar /app.jar ${0} ${@}"]

指定 JVM 参数和 shell 参数

docker run -p 9000:9000 -e "JAVA_OPTS=-Ddebug -Xmx128m" demo1/app --server.port=9000

二:使用 Idea 可视化管理 docker, 构建 Springboot 容器

这个在我另外一篇文章有讲到,都比较简单,有啥问题请留言。

三:使用 Maven 插件自动化构建 Image

https://github.com/spotify/dockerfile-maven ,能力强的可以直接去看 README.md。

简单介绍一下这个插件做啥用的

  1. 通过 pom 配置 docker 构建 Image 过程,参数等 。

  2. 封装了自动化 build,push,run 等 Maven 命令 。*

  3. 需要依赖 Dockerfile,Dockerfile 与 pom.xml 位于同一个目录下。

在 pom.xml 同目录下创建 Dockerfile

  1. FROM openjdk:8-jre 
  2. ENTRYPOINT ["/usr/bin/java""-jar""/usr/share/myservice/app.jar"]  
  3. ARG JAR_FILE 
  4. ADD target/${JAR_FILE} /usr/share/myservice/app.jar

在 pom 中添加

  1. <plugin>
  2.                 <groupId>com.spotify</groupId>
  3.                 <artifactId>dockerfile-maven-plugin</artifactId>
  4.                 <version>1.4.13</version>
  5.                 <executions>
  6.                     <execution>
  7.                         <id>default</id>
  8.                         <goals>
  9.                             <goal>build</goal>
  10.                             <goal>push</goal>
  11.                         </goals>
  12.                     </execution>
  13.                 </executions>
  14.                 <configuration>
  15.                     <!--你需要配置的地方-->
  16.                     <!--指定仓库名/镜像名-->
  17.                     <repository>myrep/${project.artifactId}</repository>
  18.                     <!--指定tag -->
  19.                     <tag>${project.version}</tag>
  20.                     <buildArgs>
  21.                         <!--指定参数jar-->
  22.                         <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
  23.                     </buildArgs>
  24.                 </configuration>
  25.             </plugin>

最后在 Idea Maven 插件 Plugins 点击 docker:build 即可。或者输入命令

mvn com.spotify:dockerfile-maven-plugin:build

四: 使用 Google 的 Maven 插件进行容器管理 (重头戏)

Google 开源项目 Jib,对比上面那个插件 Jib 的 Start 数为 7.8k,dockerfile-maven 为 2.4k。maven 插件

  1. <plugin>
  2.                 <groupId>com.google.cloud.tools</groupId>
  3.                 <artifactId>jib-maven-plugin</artifactId>
  4.                 <version>1.6.0</version>
  5.                 <configuration>
  6.                     <!--配置基本镜像-->
  7.                     <from>
  8.                         <image>openjdk:8-jdk-alpine</image>
  9.                     </from>
  10.                     <!--配置最终推送的地址,仓库名,镜像名-->
  11.                     <to>
  12.                         <image>registry.hub.docker.com/maoduntt/test</image>
  13.                     </to>
  14.                 </configuration>
  15.                 <!--绑定到maven lifecicle-->
  16.                 <executions>
  17.                     <execution>
  18.                         <phase>package</phase>
  19.                         <goals>
  20.                             <goal>build</goal>
  21.                         </goals>
  22.                     </execution>
  23.                 </executions>
  24.             </plugin>

配置 maven docker hub 账户和密码, 在 maven settings.xml 中添加

  1. <server>
  2.       <id>registry.hub.docker.com</id>
  3.       <username>你的dockerhub用户名</username>
  4.       <password>你的dockerhub密码</password>
  5.     </server>

在 idea maven 插件中点击或者 maven 命令 mvn compile jib:buildTar

013495226de526b482a3da5ef62ec48a.png

a90368da03987da07df1e091d0a27c3e.png

可以看到推送远程成功,Jib 不需要写 Dockerfile 只需要你在插件中定义构建类型,所以使用时请多参考 github 的文档。最后现在也有这种开源的容器云平台,可以去了解下。


作者:maodun

来源链接:

https://zhuanlan.zhihu.com/p/89161347

f7ef855e166bd47d7d78f92622884578.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/57902
推荐阅读
相关标签
  

闽ICP备14008679号