如何解决使用 Spring Boot Paketo Buildpack 时的 Dockerfile“VOLUME”等效
我目前正在将 Spring Boot App 的容器化从 Dockerfile
文件迁移到 Spring Boot Maven 插件 build-image
。
现在我想知道如何在这种情况下配置卷。相当于在 VOLUME ["/var/store"]
中有一个 Dockerfile
声明。我已经谷歌搜索了一段时间,感谢帮助。谢谢!
解决方法
这取决于目的。
- 如果您想在 buildpack 运行时添加卷挂载,那么您可以将
<binding>
添加到您的pom.xml
。
在构建镜像时应该挂载到构建器容器的卷绑定挂载。创建构建器容器时,绑定将未经解析和未经验证传递给 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 插件。
-
您可以在运行应用程序时绑定卷。这只是使用容器运行时的标准工具和参数。例如,您可以
docker run -v
并映射到一个卷中。 -
如果您想要 Dockerfile 中
VOLUME
条目的特定行为(实际上没有执行上面的 1 或 2),则不会为使用 Buildpacks 创建的图像公开,这就是 Spring Boot正在使用。如果这是您想要的,我鼓励您read this SO post on volumes 并重新考虑您是否真的需要它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。