如何将外部应用程序属性传递到docker容器

时间:2018-04-10 10:17:57

标签: java docker spring-boot application.properties

请您阅读似乎解决这个问题的帖子,但我仍然无法解决我的问题。我在我的spring boot应用程序中有一个默认的application.properties在docker容器中运行,但我想添加外部application.properties。

这是我的泊坞文件:

FROM tomcat:8-alpine
COPY target/demoapp.war /usr/local/tomcat/webapps/demo.war
RUN sh -c 'touch /usr/local/tomcat/webapps/demo.war'
EXPOSE 8080
ENTRYPOINT [ "sh", "-c", "java -Djava.security.egd=file:/dev/./urandom -jar /usr/local/tomcat/webapps/demo.war", "--spring.config.location=C:/Users/650/Documents/Workplace/application.properties"]

我用以下代码构建文件:

docker build . -t imagename

我使用以下命令运行spring boot docker容器:

docker run -p 8080:8080 -v C:/Users/650/Documents/Workplace/application.properties:/config/application.properties --name demosirs --link postgres-
standalone:postgres -d imagename

容器仍然没有找到我的外部application.properties,请问我该如何克服这个挑战?

3 个答案:

答案 0 :(得分:1)

您指的是docker ENTRYPOINT命令中的主机路径。只需参考特定于容器的路径:

  

ENTRYPOINT [“sh”,“ - c”,“java -Djava.security.egd = file:/ dev /./ urandom -jar /usr/local/tomcat/webapps/demo.war”,“ - spring.config.location = <强> /config/application.properties “]

而且,我注意到,您正在使用文件作为-v docker run参数的值。所以将其更改为相应的目录:

  

-v C:/ Users / 650 / Documents / Workplace:/ config

答案 1 :(得分:0)

您可以尝试提供文件路径而不是类路径。

 "--spring.config.location=file:${configDirectory}/application.yml"

您可以使用spring cloud配置项目。

https://spring.io/guides/gs/centralized-configuration/

答案 2 :(得分:0)

在你的入口点传递另一个参数

-Dspring.config.location=<your custom property file location>