Я создаю изображение Докера, чтобы запустить приложение Spring Boot. Я хочу, чтобы пользователь мог загружать файл свойств времени выполнения, установив в контейнер папку, содержащую application.properties. Вот мой Dockerfile,Крепление докеров происходит до или после выполнения точки входа
FROM java:8
RUN mkdir /app
RUN mkdir /app/config
ADD myapp.jar /app/
ENTRYPOINT ["java","-jar","/app/myapp.jar"]
Когда сбрасывая контейнер, я запускаю это,
docker run -d -v /home/user/config:/app/config myapp:latest
где /home/user/config
содержит application.properties
я хочу файл банка, чтобы забрать во время работы.
Однако это не сработает, приложение не забирает этот файл установочных свойств, он использует стандартную упаковку внутри банки. Но когда I exec
в запущенном контейнере и снова запустит cmd entrypoint снова, он работает, как ожидалось, путем сбора файла, на котором я смонтирован. Поэтому мне интересно, это связано с тем, как mount работает с точкой входа? Или я просто не написал Dockerfile правильно для этого случая?
Когда вы запускаете его вручную, в каком каталоге вы его запускаете? '/' или '/ app'? – Roman
Извините, ответили слишком рано. Наверное, вы имеете в виду, где я буду запускать после «exec» в контейнере? Я запускаю его под '/ app', поэтому cmd, который я запускал вручную, был просто' java -jar myapp.jar' – Derek
О, просто попробовал запустить cmd где-то в другом месте, тогда он не использует смонтированный в config. Поэтому я предполагаю, что проблема в том, что я не совсем понял, как Spring Boot загружает внешнюю конфигурацию. – Derek