Dockerfile эквивалент «VOLUME» при использовании Spring Boot Paketo Buildpack
В настоящее время я работаю над переносом контейнеризации приложения Spring Boot из файла в подключаемый модуль Spring Boot Maven.
build-image
.
Теперь мне интересно, как настроить том в этом сценарии. Эквивалент наличия
VOLUME ["/var/store"]
заявление в
Dockerfile
. Я уже какое-то время гуглил, помощь оценила. СПАСИБО!
1 ответ
Это зависит от цели.
- Если вы хотите добавить монтирование тома во время работы пакетов сборки, вы должны добавить
<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
flag, если вы используете пакет cli вместо плагина Spring Boot Maven.
Вы можете привязать тома при запуске приложения. Это просто использует стандартные инструменты и аргументы для среды выполнения вашего контейнера. Например, вы можете
docker run -v
и карта в томе.Если вам нужно конкретное поведение
VOLUME
запись в Dockerfile (которая на самом деле не выполняет 1 или 2 выше), которая не отображается для образов, созданных с помощью Buildpacks, что и использует Spring Boot. Если это то, что вы хотите, я бы посоветовал вам прочитать этот пост SO о томах и подумать, действительно ли он вам нужен.