точка входа - это секрет.
У вас есть два решения:
создать изображение для получения этих параметров через переменные среды и позволить ENTRYPOINT вставляет их внутрь App/bin/config/application.properties
проектирует изображение для прослушивания каталога. Если этот каталог содержит *.properties
файлов, ENTRYPOINT соберет эти файлы и объединит их в один файл и добавит содержимое с помощью App/bin/config/application.properties
Оба решения имеют одинаковый файл Dockerfile
From java:x
COPY jar ...
COPY myentrypoint /
ENTRYPOINT ["bash", "/myentrypoint"]
Но не тот же ENTRYPOINT (myentrypoint)
решение A - точка входа:
#!/bin/bash
# if the env var DB_URL is not empty
if [ ! -z "${DB_URL}" ]; then
echo "url=${DB_URL}" >> App/bin/config/application.properties
fi
# do the same for other props
#...
exec call-the-main-entry-point-here $@
Чтобы создать контейнер из этого решения:
docker run -it -e DB_URL=jdbc:postgresql://localhost:5432/sakila myimage
решение B - точка входа:
#!/bin/bash
# if /etc/java/props.d/ is a directory
if [ -d "/etc/java/props.d/" ]; then
cat /etc/java/props.d/*.properties
awk '{print $0}' /etc/java/props.d/*.properties >> App/bin/config/application.properties
fi
#...
exec call-the-main-entry-point-here $@
Чтобы создать контейнер из этого решения:
docker run -it -v ./folder-has-props-files:/etc/java/props.d myimage