You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

docker-compose挂载卷异常:主机目录已创建但容器未写入数据

问题根因

核心问题是挂载路径配置错误。Bitnami 维护的 MongoDB 镜像未使用官方 MongoDB 镜像默认的/data/db作为数据存储目录,其默认持久化路径为/bitnami/mongodb。
你当前的配置将宿主机目录挂载到了容器内一个不会被 MongoDB 进程写入的无效路径:Docker 会按照 bind mount 的规则自动创建你声明的宿主机源目录,但因为容器内的目标挂载点无任何进程写入数据,宿主机目录自然始终为空,也不会有任何读写错误日志——挂载本身是生效的,只是挂错了地方。
你推测的“自动分配临时存储卷”并不成立:如果容器使用了匿名临时卷,你会在挂载信息里看到随机生成的Docker卷ID绑定到MongoDB的实际数据路径,和你声明的/app/local-data挂载互不干扰。

排查验证步骤
  • 确认MongoDB实际启动参数
    容器启动后执行命令进入容器,查看mongod进程的启动配置:
    docker-compose exec db bash
    ps aux | grep mongod
    
    输出内容中会明确看到--dbpath /bitnami/mongodb参数,即为进程实际写入数据的路径。
  • 确认无效挂载点状态
    在容器内执行ls -la /data/db,会发现该目录为空,无任何MongoDB生成的数据文件,印证该路径未被使用。
  • 确认挂载实际生效状态
    在宿主机执行命令查看容器挂载详情:
    docker inspect <db服务对应的容器ID/名称> | grep -A 15 Mounts
    
    返回结果中可以看到/app/local-data确实正确绑定到了容器内的/data/db路径,不存在挂载失效问题。
修复方案

修改docker-compose.yml中的卷挂载配置,将目标路径替换为Bitnami镜像实际使用的数据路径:

version: '3.7'

services:
  db:
    image: bitnami/mongodb:5.0.6
    volumes:
      - "/app/local-data:/bitnami/mongodb"
    env_file: ./db/.env

配置修改后执行docker-compose down && docker-compose up -d重建容器,待服务启动完成后查看宿主机/app/local-data目录,即可看到正常生成的WiredTiger存储引擎文件、数据文件、日志索引文件,后续执行up/down操作数据会正常持久化。

提示:所有Bitnami维护的容器镜像,应用数据默认都存放在/bitnami/<应用名>路径下,和对应软件官方镜像的默认路径普遍存在差异,使用时不要直接套用官方镜像的路径配置。

内容的提问来源于stack exchange,提问作者user8555937

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 09:03:21