2016-08-15 51 views

回答

0

您需要将此图片与您的自定义配置文件的延伸,以下内容写你自己的Dockerfile

FROM <docker-jira image name>:<tag> 

COPY <path to the server.xml on your computer, relative to Dockerfile dir> <path to desired location of server.xml inside the container> 

之后,你需要建立并运行你的新形象:

docker build . --tag <name of your image> 
docker run <name of your image> 
0

替代一) 我会说你走错了这里的路径。您不希望在图像创建过程中这样做,而是在入口点期间。

码头工人在第一个容器启动期间配置服务是非常普遍和最好的​​做法,例如,对数据库进行种子处理,生成密码和种子,并在您的情况下根据模板生成配置。

通常这些配置文件是由ENV变量控制的,您将其传递给docker run,或者更确切地说,在您的docker-compose.yml中,在更复杂的环境中,配置变量的来源可以是consul或etcd。

对于您的例子,例如你可以引入一个ENV变量'USE_SSL',然后在你的入口点使用sed来替换server.xml中的东西,但是因为你需要更多的东西,比如设置reverse_proxy域和东西,你应该使用tiller :https://github.com/markround/tiller

创建一个server.xml.erb文件,放置想要变为动态的变量,如果条件是如果您想排除某个节(如果未设置USE_SSL),那么让tiller使用ENVIRONMENT作为数据源。

备选方案B) 如果你真的想留下来与“图像生成”的概念(不推荐),你应该使用所谓的build_args https://docs.docker.com/engine/reference/commandline/build/

添加到您的搬运工文件

ARG USE_SSL 

RUN /some_script_you_created_to_generate_server_xml.sh $USE_SSL 

你仍然需要一个bash /无论脚本some_script_you_created_to_generate_server_xml.sh它采取的参数,并创造条件,无论你想要的。当东西变得更大时(与运行某些seds/awks相比),分蘖虽然会更方便

然后,在构建图像时,可以使用 `docker build。 --build-arg USE_SSL = no -t yourtag

相关问题