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

本文详细介绍了如何使用各种构建插件(如Spring Boot Maven/Gradle插件、Spotify Maven插件、Palantir Gradle插件、Jib Maven/Gradle插件)来构建和管理Spring Boot应用的Docker镜像。这些插件提供了自动化构建流程,有的甚至不需要Docker守护进程。文章还讨论了持续集成工具如Jenkins和Concourse在构建和部署Docker镜像中的应用,以及构建包(如Cloud Foundry的Build Packs)在提高构建效率和安全性方面的作用。
摘要由CSDN通过智能技术生成

构建插件

如果你不想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,但后续构建应该很快。

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

docker run -p 8080:8080 -t myorg/myapp
Setting Active Processor Count to 6
Calculating JVM memory based on 14673596K available memory
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%)
Adding 129 container CA certificates to JVM truststore
Spring Cloud Bindings Enabled
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
....
2015-03-31 13:25:48.035  INFO 1 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
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很多人喜欢的 .

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

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

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

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

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

pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.4.8</version>
            <configuration>
                <repository>myorg/${project.artifactId}</repository>
            </configuration>
        </plugin>
    </plugins>
</build>复制

Palantir Gradle 插件

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技能咖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值