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

Docker Compose挂载本地目录至php:5.6-apache容器失败求助

排查Docker Compose挂载本地目录后容器内为空的问题

我来帮你梳理这个挂载问题,你遇到的容器内/var/www/html为空但本地./web有内容的情况,通常是由几个常见原因导致的,咱们一步步排查:

1. 确认Docker Compose执行路径是否正确

Docker Compose里的相对路径./web是相对于你执行docker-compose up命令时所在的目录,而不是docker-compose.yml文件的路径(除非你用-f指定了yml路径)。

  • 先执行pwd查看当前终端所在目录,确认这个目录下确实存在web子目录,且里面有内容;
  • 如果你的docker-compose.yml不在当前目录,需要用docker-compose -f /path/to/your/docker-compose.yml up来指定文件路径,此时./web会相对于yml文件的所在目录。

2. 检查容器挂载的实际路径

通过Docker命令查看容器的挂载详情,确认本地路径是否正确绑定:

  1. 运行docker ps找到你的apache容器ID;
  2. 执行docker inspect <容器ID>,在输出中找到Mounts字段,查看:
    • Source:显示的本地路径是否和你预期的一致;
    • Destination:是否为/var/www/html;
    • Mode:是否为rw(读写),如果是ro可能导致无法读取,但一般不会是空目录。

如果Source路径不对,说明你执行docker-compose up的目录错误,切换到正确目录重新启动即可。

3. 排查文件权限问题

php:5.6-apache容器内的/var/www/html目录默认由www-data用户(UID=33)拥有,若本地./web目录的权限设置导致容器内用户无法读取,也可能出现看起来为空的情况:

  • 在Linux/macOS上,执行ls -ld ./web查看目录权限,确保其他用户有读取权限(比如权限为drwxr-xr-x);
  • 可以临时调整权限测试:chmod -R 755 ./web,然后重启容器,看内容是否出现;
  • 不要直接修改本地目录的所属用户为33(除非你明确知道后果),避免影响本地使用。

4. 清理旧的Docker卷残留

如果之前你运行过这个docker-compose配置,可能存在旧的匿名卷或缓存卷覆盖了绑定挂载:

  • 执行docker-compose down -v,这个命令会停止容器并删除所有关联的卷(包括绑定挂载的临时卷);
  • 然后重新运行docker-compose up,看是否能正确挂载本地内容。

验证方法

进入容器内部直接查看:

docker exec -it <容器ID> bash

然后执行ls -l /var/www/html和ls -ld /var/www/html,如果目录为空但挂载路径正确,大概率是权限问题;如果挂载路径对应的本地目录确实为空,那就是你执行命令的目录不对。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:22:08