Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换spring/tomcat docker映像中的占位符属性_Docker_Docker Compose - Fatal编程技术网

替换spring/tomcat docker映像中的占位符属性

替换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} 我想用占位符构建图像,并给我的用户替换它们的可能性 理想情况下,在运行映

我有一个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}

我想用占位符构建图像,并给我的用户替换它们的可能性

理想情况下,在运行映像时,他们应该能够提供一个新文件作为参数,例如:

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要问的问题。请重新阅读问题,这与您的问题相同。在构建图像之前,基本上需要将所有这些变量设置为环境变量。此方法将替换运行时需要的所有变量,因为它们将被设置为环境变量。我不太明白它是如何工作的,即使我在环境中添加了所有这些属性,为什么我已经构建的映像中的文件会受到影响?如何更改映像中的变量。这些只能在容器中或在构建图像之前更改。在这两种情况下,这都是有效的。我对最初的帖子做了一些修改,以便更清楚地解释我的问题。这听起来很奇怪,你不能改变图片中的内容。