我在構建Docker鏡像以運行基於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
我想在運行時jar文件回暖。
然而,這並不起作用,應用程序運行並沒有拿起這個掛載的屬性文件,而是使用裝在jar中的默認文件。但是,當我將exec
放入啓動容器並再次手動運行入口點cmd時,它會按照預期方式運行我裝入的文件。所以我想知道這是與mount如何與入口點一起工作的相關內容?或者我只是沒有正確地爲這種情況編寫Dockerfile?
當您手動運行它時,您從哪個目錄運行它? '/'還是'/ app'? – Roman
不好意思回答得太早。我想你的意思是我在'exec'之後運行到容器中的哪個位置?我在'/ app'下運行它,所以我手動運行的cmd只是'java -jar myapp.jar' – Derek
哦,只是簡單地嘗試在其他地方運行cmd,然後它不使用配置中的掛載。所以我想這個問題是我沒有完全理解Spring Boot如何選擇外部配置。 – Derek