首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker:在镜像创建过程中修改文件

Docker:在镜像创建过程中修改文件
EN

Stack Overflow用户
提问于 2016-08-15 15:55:02
回答 2查看 1.8K关注 0票数 1

我正在为Atlassian JIRA创建一个Docker镜像。Dockerfile文件可在以下位置找到:https://github.com/joelcraenhals/docker-jira/blob/master/Dockerfile

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

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

诚挚的问候,

EN

回答 2

Stack Overflow用户

发布于 2016-08-15 17:35:55

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

在docker中,在第一个容器启动时配置服务是非常常见的,也是最好的做法,例如,在数据库中设置种子,生成密码和种子,以及根据模板生成配置。

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

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

创建一个server.xml.erb文件,放置您想要动态的变量,如果您希望在未设置USE_SSL的情况下排除某个部分,则使用if条件,并让tiller将环境用作数据源。

备选b)如果你真的想继续使用"on image build“的概念(不推荐),你应该使用所谓的build_args https://docs.docker.com/engine/reference/commandline/build/

将此代码添加到docker文件中

代码语言:javascript
复制
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,它接受参数,并根据条件创建任何你想要的东西。然而,当东西变得更大时,Tiller会更方便(与运行一些sed/awks相比)

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

票数 1
EN

Stack Overflow用户

发布于 2016-08-15 16:17:40

您需要使用您的自定义配置文件扩展此镜像,并使用以下内容编写您自己的Dockerfile

代码语言:javascript
复制
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>

在此之后,您需要构建并运行新映像:

代码语言:javascript
复制
docker build . --tag <name of your image>
docker run <name of your image>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38951294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档