微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Spring Boot Paketo Buildpack 时的 Dockerfile“VOLUME”等效

如何解决使用 Spring Boot Paketo Buildpack 时的 Dockerfile“VOLUME”等效

我目前正在将 Spring Boot App 的容器化从 Dockerfile 文件迁移到 Spring Boot Maven 插件 build-image

现在我想知道如何在这种情况下配置卷。相当于在 VOLUME ["/var/store"] 中有一个 Dockerfile 声明。我已经谷歌搜索了一段时间,感谢帮助。谢谢!

解决方法

这取决于目的。

  1. 如果您想在 buildpack 运行时添加卷挂载,那么您可以将 <binding> 添加到您的 pom.xml

https://docs.spring.io/spring-boot/docs/2.5.2/maven-plugin/reference/htmlsingle/#build-image.customization

在构建镜像时应该挂载到构建器容器的卷绑定挂载。创建构建器容器时,绑定将未经解析和未经验证传递给 Docker。

绑定必须采用以下形式之一:

  • <host source path>:<container destination path>[:<options>]

  • <host volume name>:<container destination path>[:<options>]

例如:当构建包执行时 /host/workspace 被挂载到 /workspace

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <image>
                        <bindings>
                            <binding>/host/workspace:/workspace</binding>
                        </bindings>
                    </image>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

这与使用 pack build --volume 标志相同,如果使用的是 pack cli 而不是 Spring Boot 的 Maven 插件。

  1. 您可以在运行应用程序时绑定卷。这只是使用容器运行时的标准工具和参数。例如,您可以docker run -v 并映射到一个卷中。

  2. 如果您想要 Dockerfile 中 VOLUME 条目的特定行为(实际上没有执行上面的 1 或 2),则不会为使用 Buildpacks 创建的图像公开,这就是 Spring Boot正在使用。如果这是您想要的,我鼓励您read this SO post on volumes 并重新考虑您是否真的需要它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。