docker - 如何在 Docker 中将主机文件夹与容器文件夹合并?

我在 Docker 上运行 Wikimedia。维基媒体的扩展位于 extensions/最初包含内置扩展的文件夹(一个扩展 = 一个子文件夹)

现在我想添加新的扩展。但是我不喜欢修改 Dockerfile 或在现有容器上创建新提交的选项。

是否可以在主机中创建一个文件夹(例如 /home/admin/wikimedia/extensions/ )与 extension 合并(不覆盖)容器中的文件夹?所以每当我想安装新的扩展时,我只需将扩展文件夹复制到主机/home/admin/wikimedia/extensions/

最佳答案

您可以将主机上的卷挂载到与扩展文件夹不同的位置,然后在启动脚本中,您可以将内容复制到容器的目录中。您需要重建一次主机。

例如:

Dockerfile:
  RUN cp startup-script /usr/local/bin/startup-script
  CMD /usr/local/bin/startup-script

startup-script:
   #!/bin/bash
   cp /mnt/extensions /path/to/wikipedia/extensions
   /path/to/old-startup-script $@

docker run -d -v /home/admin/wikimedia/extensions:/mnt/extensions wikipedia

这是解决此问题的一种方法,另一种方法是为扩展维护一个单独的数据容器,然后您将安装它并在维基百科容器之外维护它。它必须包含所有扩展。

你可以这样开始:

 docker run -d -v /home/admin/wikimedia/extensions:/path/to/wikipedia/extensions --name extensions busybox tail -f /dev/null
 docker run -d --volumes-from extensions wikipedia

https://stackoverflow.com/questions/27959860/

相关文章:

docker - 如何对接 ASP.NET Core 2.0 应用程序?

docker - Jenkins 2.0 : Running SBT in a docker con

docker - s3fs 无法安装在 docker 容器内吗?

macos - 在 docker 中运行 Webpack-dev-server 比在本地机器上运行要

python - 如何将包含所有依赖项的 python 包安装到 Docker 镜像中?

docker - 是否可以使用 Winscp 连接到正在运行的 docker 容器?

docker - 如何使用 docker-compose yml 文件进行生产?

java - 如何在Docker中初始化数据库后启动flyway

docker - 失败 : port is already allocated

php - 在双 nginx 反向代理中正确处理 request_uri?