如果配置了卷映射后,宿主机上的 /www/wwwroot/openim-server
目录为空,这通常是因为:
-
目录优先级问题 :当 Docker 启动容器时,如果宿主机上的目录已经存在且为空,会将容器内对应目录的内容隐藏,只有宿主机上的文件可见。因此,如果宿主机上的
/www/wwwroot/openim-server
目录为空,它会覆盖容器内/openim-server
目录的内容,使你在宿主机上看到的是一个空文件夹。 -
初始目录内容未同步:当宿主机目录挂载到容器时,容器内的内容不会自动复制到宿主机上。换句话说,如果你希望在宿主机上看到容器内的文件,必须手动复制这些文件到宿主机目录中。
解决方法
你可以选择以下两种方法之一来解决这个问题:
方法 1: 先手动复制容器内的文件到宿主机
-
启动容器,不挂载卷 :先启动容器,不配置
volumes
,让容器内的/openim-server
目录保持不变。bashdocker-compose up -d
-
进入容器并复制文件到宿主机:
bashdocker cp openim-server:/openim-server /www/wwwroot/openim-server
-
修改
docker-compose.yml
,重新添加卷映射:yamlvolumes: - /www/wwwroot/openim-server:/openim-server
-
重启容器:
bashdocker-compose down docker-compose up -d
方法 2: 在宿主机上准备好文件夹内容
-
在宿主机上准备好文件内容 :将你希望容器使用的文件手动放到
/www/wwwroot/openim-server
目录中。 -
启动容器,卷映射后生效:再次启动容器时,宿主机上的文件会覆盖容器内的文件。
总结
为了避免挂载卷后出现空文件夹的问题,建议在挂载之前手动复制容器内的文件到宿主机,或者先在宿主机上准备好需要的文件,这样可以确保在挂载卷后,你能够正确地在宿主机上查看和编辑这些文件。