gpt4 book ai didi

docker-compose 仅​​将主机上存在的文件挂载到容器

转载 作者:行者123 更新时间:2023-12-02 21:04:12 25 4
gpt4 key购买 nike

是否可以将主机目录挂载到容器中,但只允许覆盖主机上存在的文件?

示例 github 存储库:https://github.com/UniBen/stackoverflow-59031249

例如
主持人:

src/
public/
index.php (200kb)

容器:
src/
public/
index.php (100kb)
vendor/
...

期望的输出:(容器文件系统与存在的挂载主机系统文件合并。注意 index.php 文件的大小。)
src/
public/
index.php (200kb)
vendor/
...

实际输出:
src/
public/
index.php (200kb)

示例 docker-compose.yml
version: '3.2'

services:
php:
image: php
volumes:
- ./src:/src

编辑:所以看起来docker实现的overlayfs仅用于构建docker镜像,不能用于卷。我仍然认为可以指定自定义驱动程序,但不确定如何。作为临时修复,我做了一些花哨的东西,将东西从容器中映射出来,对其进行差异化并将其放回原处,但并不理想。

最佳答案

Is it possible to to mount a host directory in to a container but ...



不,唯一的 Docker 挂载选项是直接“将容器中的此目录替换为主机中的等效目录”。没有办法修改它,有选择地隐藏子目录,或者实现你的“只有当它已经存在时”规则。

在您展示的示例中,您可能根本不需要卷。像 index.php 这样的文件和 vendor目录是应用程序源代码,在典型使用中你会编写一个 Dockerfile, COPY index.php .将文件移动到图像中,然后 RUN composer ...创建供应商树。这将与您的主机环境隔离,因此 vendor镜像中的目录将与主机系统上存在的任何目录分开。

关于docker-compose 仅​​将主机上存在的文件挂载到容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59031249/

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