首页 > 解决方案 > docker mount 卷,但将文件保存在 docker 容器中

问题描述

我使用 Dockerfile 构建 php 的映像,但默认情况下,PHP 没有 php.ini 文件。所以我需要创建它。现在我有三种方法可以做到这一点:

  1. 在 Dockerfile 中使用 RUN 命令RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini。但是这种方式仍然使用默认设置,我无法编辑它(或编辑它并提交容器)。

  2. 在 Dockerfile 中使用 COPY 命令COPY php.ini /usr/local/etc/php/php.ini。好的,现在我可以编辑配置然后构建映像,但是如果我需要更改某些设置,我需要重建映像

  3. 使用 volumn args,将其添加到 docker-compose.yml 中- $PWD/php/conf.d:/usr/local/etc/php/conf.d/my_config。通过这种方式,我可以随时编辑 php.ini 并重新加载配置文件。但是,我想知道的最好方法是- $PWD/php/conf.d:/usr/local/etc/php/conf.d. 第一种方法会在 docker 容器中创建一个新的子文件夹,第二种方法会删除文件夹中原来的 *.ini 文件

我想知道这里有某种方式可以挂载卷而不删除容器中的文件(3的第二种方式但不删除文件)

标签: phpdocker

解决方案


实际上这些文件不是deleted来自子文件夹。卷安装在它上面。

参考

您可以做的是,为您的文件分配一个单独的文件夹*.ini,并从主php.ini文件中引用它。因此,每次您重新加载 php 时,它都会php.ini往返于那里,它会获取您的专用配置文件夹并*.ini从那里加载所有文件。


推荐阅读