docker-compose.yml定义的volume挂载后容器内目录为空是什么原因
目录无法同步的核心原因
你当前使用的是Docker 命名卷(Named Volume) 挂载逻辑,而非本地目录绑定挂载,两者的存储逻辑完全独立,因此不会同步你本地自建的文件夹内容:
- 你在
docker-compose.yml的顶层volumes字段中声明了db_import: {},这代表你创建了一个由Docker系统统一管理的命名卷,它的实际存储位置在Docker专属的系统存储目录下(Linux默认路径为/var/lib/docker/volumes/db_import/_data),和你在项目目录下自行创建的db_import文件夹没有任何关联。 - 命名卷首次挂载到容器路径时,仅会自动同步容器内对应路径的原有内容到卷中,不会读取本地目录的内容。
修复方案
如果需要映射本地项目同级目录下的db_import文件夹到容器内的/import路径,修改docker-compose.yml的两处配置即可:
- 修改
db服务的volumes配置,将命名卷挂载改为绑定挂载:
把原有配置
替换为- db_import:/import- ./db_import:/import - 删除顶层
volumes字段中的db_import: {}声明,绑定挂载不需要提前声明命名卷。
修改完成后执行docker-compose up -d重启服务,即可实现本地目录和容器内目录的内容同步。
内容的提问来源于stack exchange,提问作者Mayor of the Plattenbaus
相关产品推荐
相关产品推荐

