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
Docker:在图像创建过程中修改文件_Docker_Dockerfile - Fatal编程技术网

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

Docker:在图像创建过程中修改文件,docker,dockerfile,Docker,Dockerfile,我正在为Atlassian JIRA创建一个Docker图像。 Dockerfile可在此处找到: 但是,我希望在映像创建期间在Docker映像内的Tomcat服务器上启用HTTPS连接器,以便在映像创建期间配置server.xml文件 如何修改容器中的某个文件 致以最诚挚的问候,您需要使用自定义配置文件扩展此映像,请使用以下内容编写您自己的Dockerfile: FROM <docker-jira image name>:<tag> COPY <path to

我正在为Atlassian JIRA创建一个Docker图像。 Dockerfile可在此处找到:

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

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


致以最诚挚的问候,

您需要使用自定义配置文件扩展此映像,请使用以下内容编写您自己的
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>
docker构建--标签
码头工人赛跑
备选方案a) 我想说你走错了路。您不希望在图像创建期间执行此操作,而是希望在入口点期间执行此操作

在docker中,在第一个容器启动期间配置服务是非常常见和最佳的做法,例如,为数据库种子、生成密码和种子,以及(在您的情况下)根据模板生成配置

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

例如,您可以引入一个ENV变量“USE_SSL”,然后在入口点中使用
sed
,在设置server.xml时替换其中的内容,但由于您需要更多,如设置反向代理域等,因此您应该使用tiller:

创建一个server.xml.erb文件,放置要动态的变量,如果未设置use_SSL则要排除某个节,请使用if条件,并让tiller将环境用作数据源

备选方案b) 如果你真的想坚持“基于映像构建”的概念(不推荐),你应该使用所谓的构建参数

将此添加到docker文件

ARG USE_SSL

RUN /some_script_you_created_to_generate_server_xml.sh $USE_SSL
您仍然需要一个bash/which script
一些您创建的脚本来生成服务器xml.sh
,它接受参数并根据条件创建您想要的任何内容。但是,当东西变大时,Tiller会更方便(与运行一些SED/AWK相比)

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