如何在Docker容器文件夹不为空时共享它?

时间:2016-02-17 13:31:55

标签: drupal docker drupal-8

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

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

我想与我的主机共享的文件夹(/ var / www / html)不为空。这是安装Drupal的地方。但是,我在主机中的文件夹是空的($ HOME / site / drupal8),mountpoint替换容器文件夹中的内容。结果,Drupal内容消失了。

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

这是我正在使用的命令:

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

如果你从apache图像开始,你只需要花时间重新发明轮子,最后,你仍会遇到同样的问题。

我看到了不同的解决方案,并没有与你的drupal问题直接相关,但这里有一些线索。

第一个解决方案(用于开发): 我最简单的观点是,您必须在主机上检索drupal文件夹。无论您是否可以从互联网上下载,是否必须从图像drupal中检索。

要从您的图片中检索文件,请在没有安装任何卷的情况下运行容器,使用docker cp command检索文件夹。

在主机上检索文件夹后,使用卷

启动容器

Seconde解决方案

我看到解决方案装载量/ var / www / html _ref 仅包含重载文件。

修改图像,以便在首次运行时从此文件夹复制到容器文件夹。

Jenkins图像使用此方法将插件添加到默认目录。

第三种解决方案(用于生产)

从drupal图像创建自己的dockerfile。将自定义/ var / www / html添加到您的图像中。

在此解决方案中,您将为每个版本或脚本构建新映像(taggued)。

<强>结论

很难为开发和生产提供相同的图像。如果您需要将目录与我们的IDE同步,我建议使用volume(第一个解决方案)。