2016-07-19 1 views
0

Я создаю изображение Докера, чтобы запустить приложение 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 правильно для этого случая?

+0

Когда вы запускаете его вручную, в каком каталоге вы его запускаете? '/' или '/ app'? – Roman

+0

Извините, ответили слишком рано. Наверное, вы имеете в виду, где я буду запускать после «exec» в контейнере? Я запускаю его под '/ app', поэтому cmd, который я запускал вручную, был просто' java -jar myapp.jar' – Derek

+0

О, просто попробовал запустить cmd где-то в другом месте, тогда он не использует смонтированный в config. Поэтому я предполагаю, что проблема в том, что я не совсем понял, как Spring Boot загружает внешнюю конфигурацию. – Derek

ответ

1

Spring Загрузочный searches для application.properties внутри /config подкаталоге текущего каталога (среди других местах). В вашем случае текущий каталог равен / (докеры по умолчанию), поэтому вам необходимо изменить его на /app. Для этого добавьте

WORKDIR /app 

до ENTRYPOINT линия.


И для ответа на ваш первоначальный вопрос: крепления выполняются до того, как все, что находится внутри контейнера, будет запущено.

+0

Yup, просто сделал это, и он работает. Должно быть, прочитайте страницу документа немного более тщательно. Большое спасибо за быструю помощь! – Derek

Смежные вопросы