这是一个示例symfony项目:
my_project:
assets:
src:
web:
package.json
composer.json
我有一个apache容器和一个带有webpack的容器,用于监视assets文件夹并在发生变化时构建它。
由于两个容器都需要访问相同的文件系统,让我们说:
composer install
和npm install
命令一切准备就绪后,我需要apache容器与主机和webpack容器共享src文件夹,以与主机共享assets文件夹。 这样,每次我更改这些文件夹中的文件时,我都能在浏览器中看到结果。
我看到暂时不是possible挂载子目录所以其他方式是什么? 或者我是否以错误的方式思考它?
由于安装命名卷的子目录是not a possibility,也许你可以尝试以下。
在我看来,多个容器需要访问同一个文件系统。根据码头volume docs:
请记住,多个容器可以安装相同的卷,并且可以为其中一些容器以读写方式挂载,同时为其他容器以只读方式挂载。
基本上,您可以创建一个docker卷并在所有容器之间共享它:
# 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
如果您希望应用程序(例如apache)仅访问卷中的子文件夹,则可以始终将卷装载到/
(或您选择的任何位置),并从应用程序将访问卷子目录的目录中创建符号链接。例如:
# 1. Run your apache container, mounting the named volume to root dir
docker run -v my_project_volume:/my_project --name my_apache httpd:latest
# 2. Create symlink to named volume subdirectory
docker exec -it my_apache ln -s /usr/local/apache2/htdocs /my_project/src