如何在docker中动态配置应用程序属性文件

如何在docker中动态配置应用程序属性文件,docker,dockerfile,devops,12factor,Docker,Dockerfile,Devops,12factor,我有一个包含application.properties文件的jar文件。 我们可以在运行docker映像时配置IP地址、端口号、用户名和密码吗 属性文件位置 App/bin/config/application.properties driverClassName = org.postgresql.Driver url = jdbc:postgresql://localhost:5432/sakila username = root password = root 以下是applicatio

我有一个包含application.properties文件的jar文件。 我们可以在运行docker映像时配置IP地址、端口号、用户名和密码吗

属性文件位置

App/bin/config/application.properties

driverClassName = org.postgresql.Driver
url = jdbc:postgresql://localhost:5432/sakila
username = root
password = root
以下是application.properties

driverClassName = org.postgresql.Driver
url = jdbc:postgresql://localhost:5432/sakila
username = root
password = root

入口点是秘密

您有两种解决方案:

  • 设计映像以通过环境变量接收这些参数,并让入口点将它们注入
    App/bin/config/application.properties

  • 设计图像以侦听目录。如果此目录包含
    *.properties
    文件,则入口点将收集这些文件并将它们合并到一个文件中,并将内容附加到
    App/bin/config/application.properties

两种解决方案具有相同的Dockerfile

From java:x

COPY jar ...
COPY myentrypoint /
ENTRYPOINT ["bash", "/myentrypoint"]
但不是相同的入口点(myentrypoint)

解决方案A-入口点: 要从此解决方案创建容器,请执行以下操作:

 docker run -it -e DB_URL=jdbc:postgresql://localhost:5432/sakila myimage
 docker run -it -v ./folder-has-props-files:/etc/java/props.d myimage
解决方案B-入口点: 要从此解决方案创建容器,请执行以下操作:

 docker run -it -e DB_URL=jdbc:postgresql://localhost:5432/sakila myimage
 docker run -it -v ./folder-has-props-files:/etc/java/props.d myimage

您好,欢迎来到SO,您可以提供一个docker映像和命令文件,用于构建和创建映像吗?