问题描述
我有一个 docker-compose
文件运行 PHP 并以嵌套方式安装一些卷。它已经工作了两年。最近我又试了一次,但它失败了,至少在 WSL 2 的 Docker 上是这样。这是来自 docker-compose 文件的挂载卷。
volumes:
- ../src:/var/www/html:ro
- ./userData:/var/www/html/userData:ro
请注意,第二个卷安装在第一个卷中。
Docker 无法挂载第二个目录,声称它无法更新只读文件系统。我可以从第一个安装中删除 :ro
并且它可以工作,但是 - 我确实希望两个安装都是只读的,并且我想保留外部文件系统(使用 src
和 { {1}}) 原样。
我怎样才能让这种挂载行为再次起作用?
解决方法
你不能这样做。嵌套的土墩需要在您的文件系统上创建目录。
所以您的解决方案是:
- 为
- ../src:/var/www/html:ro
禁用只读 - 创建链接
ln -s ./userData ../src/userData
- 不要使用嵌套安装,这是一种不好的做法。所以您的容器需要重新设计。