Dockerfile эквивалент «VOLUME» при использовании Spring Boot Paketo Buildpack

В настоящее время я работаю над переносом контейнеризации приложения Spring Boot из файла в подключаемый модуль Spring Boot Maven. build-image.

Теперь мне интересно, как настроить том в этом сценарии. Эквивалент наличия VOLUME ["/var/store"] заявление в Dockerfile. Я уже какое-то время гуглил, помощь оценила. СПАСИБО!

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 flag, если вы используете пакет cli вместо плагина Spring Boot Maven.

  1. Вы можете привязать тома при запуске приложения. Это просто использует стандартные инструменты и аргументы для среды выполнения вашего контейнера. Например, вы можете docker run -v и карта в томе.

  2. Если вам нужно конкретное поведение VOLUMEзапись в Dockerfile (которая на самом деле не выполняет 1 или 2 выше), которая не отображается для образов, созданных с помощью Buildpacks, что и использует Spring Boot. Если это то, что вы хотите, я бы посоветовал вам прочитать этот пост SO о томах и подумать, действительно ли он вам нужен.

Другие вопросы по тегам