0

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

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

4

1 回答 1

1

这取决于目的。

  1. 如果您想在构建包运行时添加卷挂载,那么您可以<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. 如果您想要VOLUMEDockerfile 中条目的特定行为(实际上并没有执行上面的 1 或 2),那么对于使用 Spring Boot 正在使用的 Buildpacks 创建的图像,它不会公开。如果这是你想要的,我鼓励你阅读这篇关于卷的 SO 帖子,并重新考虑你是否真的需要它。

于 2021-07-07T13:25:45.413 回答