替换spring/tomcat docker映像中的占位符属性
我有一个Dockerfile,例如:替换spring/tomcat docker映像中的占位符属性,docker,docker-compose,Docker,Docker Compose,我有一个Dockerfile,例如: FROM tomcat:8.5 COPY webapp.war /usr/local/tomcat/webapps/ COPY conf /usr/local/tomcat/conf/ CMD ["catalina.sh", "run"] conf包含多种类型的文件(.json、.xml、.properties),其中包含以下格式的占位符:${some.place.holder} 我想用占位符构建图像,并给我的用户替换它们的可能性 理想情况下,在运行映
FROM tomcat:8.5
COPY webapp.war /usr/local/tomcat/webapps/
COPY conf /usr/local/tomcat/conf/
CMD ["catalina.sh", "run"]
conf
包含多种类型的文件(.json、.xml、.properties),其中包含以下格式的占位符:${some.place.holder}
我想用占位符构建图像,并给我的用户替换它们的可能性
理想情况下,在运行映像时,他们应该能够提供一个新文件作为参数,例如:
some.place.holder=hello
实现这一点的正确方法是什么?如果要使用bash文件设置所有变量,可以编写
set\u env\u var.sh
:
#!/bin/sh
export PLACEHOLDER1=value
export PLACEHOLDER2=value
并运行:
source set_env_var.sh
它将设置所有变量
或者,您可以通过如下设置多个变量来运行任何命令。例如,我想通过以下方式运行docker compose命令,其中包含变量:
placeholder 1=value placeholder 2=value docker compose up-d
添加一个示例文件有一些XML、一些spring属性文件和一些json文件。基本上什么都可以。我不认为一个例子会有用。这是什么样的应用程序?它需要编译吗?是JavaScript还是PHP还是什么?JavaSpring应用程序。大部分都是配置文件,实际的代码当然已经编译好了。您是否尝试过以SOME\u PLACE\u HOLDER
的形式定义环境变量,看看它们是否会被自动替换?这不是OP要问的问题。请重新阅读问题,这与您的问题相同。在构建图像之前,基本上需要将所有这些变量设置为环境变量。此方法将替换运行时需要的所有变量,因为它们将被设置为环境变量。我不太明白它是如何工作的,即使我在环境中添加了所有这些属性,为什么我已经构建的映像中的文件会受到影响?如何更改映像中的变量。这些只能在容器中或在构建图像之前更改。在这两种情况下,这都是有效的。我对最初的帖子做了一些修改,以便更清楚地解释我的问题。这听起来很奇怪,你不能改变图片中的内容。