如何共享一个Docker容器文件夹,当它不是空的?

我是docker / drupal的新手,使用drupal图像创build容器时遇到问题:

https://hub.docker.com/_/drupal/

我想与我的主机共享(/ var / www / html)的文件夹不是空的。 这是Drupal的安装位置。 但是,我的主机中的文件夹是空的($ HOME / site / drupal8),并且装载点将replace容器文件夹中的内容。 结果,Drupal内容消失了。

我知道这是使用挂载点时的正常行为。 不过,我想知道开发人员如何能够在本地更改容器上的代码。

这是我正在使用的命令:

docker run -d -P -v $HOME/site/drupal8:/var/www/html --name drupal8 drupal 

顺便说一下,这是用Drupal开始开发的正确方法吗? 或者我应该使用一个空的Docker(只有LAMP),并将drupal本地安装在共享文件夹中?

谢谢!

如果你从apache镜像开始,你只需花时间重新发明轮子,最后还是会有同样的问题。

我看到了不同的解决scheme,不直接链接到你的drupal有问题,但是这里有一些线索。

第一个解决scheme(用于开发):我认为最简单的,你必须检索你的主机上的drupal文件夹。 无论你是否可以从互联网上下载,你是否必须从你的图像中取回drupal。

要从您的图像中检索文件,运行没有装入任何卷的容器,使用docker cp命令检索文件夹。

一旦您检索到您的主机上的文件夹,启动音量容器

Seconde解决scheme

我看到只包含超载文件的解决scheme挂载卷/ var / www / html _ref

在第一次运行时,图像被修改为从该文件夹复制到容器文件夹。

jenkins图像使用这个插件添加到默认目录。

第三个解决scheme(生产)

从Drupal图像创build你自己的dockerfile。 将您的自定义/ var / www / html添加到您的图像。

在此解决scheme中,您将为每个版本或脚本构build新的图像(tag tag)。

结论

开发和生产很难有相同的形象。 如果您需要与我们的IDE同步目录,我build议使用卷(第一个解决scheme)。