Docker无法在本地OS X中的Yii / PHP应用程序中将资源文件夹写入Web服务器进程

时间:2016-05-03 23:16:32

标签: php macos yii docker

如果你能帮助我,谢谢。

我正在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中,我还尝试运行chmodchown命令,但是我收到了这些错误:

chown: changing ownership of 'assets': Read-only file system

chmod: changing ownership of 'assets': Read-only file system

如何通过docker中的Web服务器进程使我的目录可写?

更新

$ docker ps返回

enter image description here

$ docker info## Heading ##返回

enter image description here

更新2: $ docker inspect返回 http://pastebin.com/wM3tT51v

2 个答案:

答案 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

来解决用户权限问题

这样你就拥有了一个非常高性能的共享,但是,拥有一个适当的用户映射,从不关心容器中的权限问题(对于安装在主机上的文件夹)