如何从名为docker的卷共享子文件夹?

时间:2018-09-02 12:51:05

标签: docker docker-compose dockerfile

这是一个示例symfony项目:

my_project:
    assets:
    src:
    web:
    package.json
    composer.json

我有一个 apache 容器和一个带有 webpack 的容器,该容器将用于监视 assets 文件夹并在发生更改时进行构建。

由于两个容器都需要访问相同的文件系统,所以我说:

  • 创建命名卷
  • 使用此technique
  • 在其中复制my_project
  • 运行一些composer installnpm install命令

一切准备就绪后,我需要 apache 容器与主机共享 src 文件夹,并需要 webpack 容器共享< em> assets 文件夹与主机。
这样,每次更改这些文件夹中的文件时,我都可以在浏览器中看到结果。

我发现暂时不是possible来挂载子目录,那还有什么其他方法呢?
还是我想错了方向?

1 个答案:

答案 0 :(得分:0)

由于安装的已命名卷的子目录为not a possibility,也许您可​​以尝试以下方法。

如我所见,多个容器需要访问同一文件系统。根据码头工人volume docs

  

请记住,多个容器可以挂载相同的卷,并且可以同时对其中一些容器进行读写安装,而对其他容器则同时进行只读安装。

因此,从本质上讲,您可以创建一个docker卷并在所有容器之间共享它:

[]interface{}{ 
    Pixel{X: 12.5, Y: 23.4},
    Pixel{X: 17.2, Y: 7.9},
}

如果您希望应用程序(例如apache)仅访问卷中的子文件夹,则始终可以将卷挂载到[]interface{}{ Pixel{X: 12.5, Y: 23.4}, Vertex{X: 10.7, Y: 13.3, Z: 25.1}, } (或您选择的任何位置),并从应用程序目录中创建符号链接将访问该卷的子目录。例如:

# Initialize the Docker Volume
docker volume create my_project_volume
docker run -v my_project_volume:/my_project --name helper alpine true
docker cp . helper:/my_project
docker rm helper