gpt4 book ai didi

docker - 如何从 docker 命名卷共享子文件夹?

转载 作者:行者123 更新时间:2023-12-02 02:20:39 29 4
gpt4 key购买 nike

这是一个示例 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目前要挂载子目录,那么还有什么其他方法呢?
还是我的想法不对?

最佳答案

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

据我所知,多个容器需要访问同一文件系统。据dockervolume docs :

Remember that multiple containers can mount the same volume, and it can be mounted read-write for some of them and read-only for others, at the same time.

所以本质上,您可以创建一个 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

关于docker - 如何从 docker 命名卷共享子文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52137210/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com