gpt4 book ai didi

docker - Docker:在镜像创建期间修改文件

转载 作者:行者123 更新时间:2023-12-02 19:39:45 25 4
gpt4 key购买 nike

我正在为Atlassian JIRA创建Docker镜像。
Dockerfile可以在这里找到:https://github.com/joelcraenhals/docker-jira/blob/master/Dockerfile

但是,我想在镜像创建过程中在Docker镜像内的Tomcat服务器上启用HTTPS连接器,以便在镜像创建过程中配置server.xml文件。

如何修改容器中的某个文件?

最好的祝福,

最佳答案

替代a)
我会说你在这里走错了路。您不想在图像创建期间执行此操作,而是在入口点执行此操作。

在docker中的第一个容器启动期间配置服务是非常普遍和最佳实践,例如给数据库添加种子,生成密码和种子,并根据需要生成基于模板的配置。

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

例如,您可以引入一个ENV变量'USE_SSL',然后在设置入口点时使用sed替换server.xml中的某些内容,但是由于您需要做更多的事情,例如设置revers_proxy域和其他内容,因此应该使用分er :https://github.com/markround/tiller

创建一个server.xml.erb文件,放置要动态的变量,如果未设置USE_SSL则要排除部分,请使用if条件,并让分till使用ENVIRONMENT作为数据源。

替代b)
如果您真的想保留“on image build”的概念(不推荐),则应使用所谓的build_args https://docs.docker.com/engine/reference/commandline/build/

将此添加到您的Docker文件

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来获取args,并根据条件创建任意内容。虽然当 Material 变大时,分iller将更加方便(与运行某些sed / awk相比)

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

关于docker - Docker:在镜像创建期间修改文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38951294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com