我正在MAC OS X中运行docker VM,看起来没问题,直到我的应用程序尝试在服务器的assets文件夹中写入文件时出现权限错误:
CAssetManager.basePath "/var/www/html/assets" is invalid. Please make sure the directory exists and is writable by the Web server process.
我在docker容器shell($ docker exec容器)中运行ls -l
并看到我的文件夹权限设置为
drwxrwxrwx 1000 staff assets
。之后,我尝试将其设置为www-data,因为我可能会工作,所以我运行了usermod -u 1000 www-data
。现在文件夹变为:drwxrwxrwx www-data staff assets
但错误仍然存在。
在shell中,我还尝试运行chmod
和chown
命令,但是我收到了这些错误:
chown: changing ownership of 'assets': Read-only file system
chmod: changing ownership of 'assets': Read-only file system
如何通过docker中的Web服务器进程使我的目录可写?
更新
$ docker ps
返回
$ docker info## Heading ##
返回
更新2:
$ docker inspect
返回
http://pastebin.com/wM3tT51v
答案 0 :(得分:0)
查看docker检查输出
"Mounts": [
{
"Source": "/Users/joelkoh/Sites/merrymaker/php-app",
"Destination": "/var/www/html",
"Mode": "ro",
"RW": false,
"Propagation": "rprivate"
}
],
看起来您的目录是只读的,我不熟悉弹性beanstalk,但您需要更改该卷以使其不是只读的。
答案 1 :(得分:0)
您可以考虑使用http://docker-sync.io来安装共享。由于它不是挂载,而是同步,它通过将您想要的uid / guid映射到容器https://github.com/EugenMayer/docker-sync/blob/master/example/docker-sync.yml#L47
来解决用户权限问题这样你就拥有了一个非常高性能的共享,但是,拥有一个适当的用户映射,从不关心容器中的权限问题(对于安装在主机上的文件夹)