当前位置:   article > 正文

「Spring」Boot Docker 认证指南(下)_liberica jre

liberica jre

构建插件

如果你不想docker在你的构建中直接调用,有一套丰富的 Maven 和 Gradle 插件可以为你完成这项工作。这里仅仅是少数。

Spring Boot Maven 和 Gradle 插件

您可以使用Maven和Gradle的 Spring Boot 构建插件来创建容器映像。docker build这些插件使用Cloud Native Buildpacks创建一个 OCI 映像(与创建的格式相同) 。您不需要Dockerfile,但您确实需要 Docker 守护程序,可以在本地(使用 docker 构建时使用)或通过DOCKER_HOST环境变量远程进行。默认构建器针对 Spring Boot 应用程序进行了优化,并且图像像上面的示例一样有效地分层。

以下示例在不更改pom.xml文件的情况下使用 Maven:

./mvnw spring-boot:build-image -Dspring-boot.build-image.imageName=myorg/myapp复制

以下示例适用于 Gradle,无需更改build.gradle文件:

./gradlew bootBuildImage --imageName=myorg/myapp复制

第一次构建可能需要很长时间,因为它必须下载一些容器镜像和 JDK,但后续构建应该很快。

然后您可以运行映像,如以下清单所示(带输出):

  1. docker run -p 8080:8080 -t myorg/myapp
  2. Setting Active Processor Count to 6
  3. Calculating JVM memory based on 14673596K available memory
  4. Calculated JVM Memory Configuration: -XX:MaxDirectMemorySize=10M -Xmx14278122K -XX:MaxMetaspaceSize=88273K -XX:ReservedCodeCacheSize=240M -Xss1M (Total Memory: 14673596K, Thread Count: 50, Loaded Class Count: 13171, Headroom: 0%)
  5. Adding 129 container CA certificates to JVM truststore
  6. Spring Cloud Bindings Enabled
  7. Picked up JAVA_TOOL_OPTIONS: -Djava.security.properties=/layers/paketo-buildpacks_bellsoft-liberica/java-security-properties/java-security.properties -agentpath:/layers/paketo-buildpacks_bellsoft-liberica/jvmkill/jvmkill-1.16.0-RELEASE.so=printHeapHistogram=1 -XX:ActiveProcessorCount=6 -XX:MaxDirectMemorySize=10M -Xmx14278122K -XX:MaxMetaspaceSize=88273K -XX:ReservedCodeCacheSize=240M -Xss1M -Dorg.springframework.cloud.bindings.boot.enable=true
  8. ....
  9. 2015-03-31 13:25:48.035 INFO 1 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
  10. 2015-03-31 13:25:48.037 INFO 1 --- [ main] hello.Application复制

您可以看到应用程序正常启动。您可能还注意到 JVM 内存需求是在容器内计算并设置为命令行选项的。这与多年来在 Cloud Foundry 构建包中使用的内存计算相同。它代表了对一系列 JVM 应用程序(包括但不限于 Spring Boot 应用程序)的最佳选择的重要研究,结果通常比 JVM 的默认设置好得多。您可以自定义命令行选项并通过设置环境变量覆盖内存计算器,如Paketo buildpacks 文档中所示。

Spotify Maven 插件

Spotify Maven 插件是一个受欢迎的选择。它要求您编写 aDockerfile然后docker为您运行,就像您在命令行上执行它一样。docker 镜像标签和其他东西有一些配置选项,但它使您的应用程序中的 docker 知识集中在一个Dockerfile很多人喜欢的 .

对于真正的基本用法,它无需额外配置即可开箱即用:

  1. mvn com.spotify:dockerfile-maven-plugin:build
  2. ...
  3. [INFO] Building Docker context /home/dsyer/dev/demo/workspace/myapp
  4. [INFO]
  5. [INFO] Image will be built without a name
  6. [INFO]
  7. ...
  8. [INFO] BUILD SUCCESS
  9. [INFO] ------------------------------------------------------------------------
  10. [INFO] Total time: 7.630 s
  11. [INFO] Finished at: 2018-11-06T16:03:16+00:00
  12. [INFO] Final Memory: 26M/595M
  13. [INFO] ------------------------------------------------------------------------复制

这将构建一个匿名 docker 映像。我们现在可以在命令行上标记它docker或使用 Maven 配置将其设置为repository. 以下示例在不更改pom.xml文件的情况下工作:

$ mvn com.spotify:dockerfile-maven-plugin:build -Ddockerfile.repository=myorg/myapp复制

或者,您更改pom.xml​文件:

pom.xml

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>com.spotify</groupId>
  5. <artifactId>dockerfile-maven-plugin</artifactId>
  6. <version>1.4.8</version>
  7. <configuration>
  8. <repository>myorg/${project.artifactId}</repository>
  9. </configuration>
  10. </plugin>
  11. </plugins>
  12. </build>复制

Palantir Gradle 插件

Palantir Gradle 插件与 a 一起使用,Doc

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

闽ICP备14008679号