【问题标题】:Wordpress write-access when using Docker for Windows使用 Docker for Windows 时的 Wordpress 写访问权限
【发布时间】:2018-12-23 06:02:20
【问题描述】:

我想设置一个本地 Wordpress 开发环境,所以我正在尝试 Docker for Windows 和 WSL。我使用了标准图像(wordpress:4.9.7、mysql:5.7 和 phpmyadmin/phpmyadmin)并使用了 docker-compose。我可以运行 Wordpress,但在尝试更新或添加插件时遇到问题。

我在 docker-compose.yml 的 Wordpress 服务部分有这个:

volumes:
  - ./wp-content:/var/www/html/wp-content

这意味着:

  1. 我可以在主机中编辑主题和插件文件(很棒),但是...
  2. 容器的 /var/www/html/wp-content 文件夹是 root:root 755。所以 Wordpress 不能更新/添加插件或从管理员上传其他文件 - 我不能 chown 或 chmod 这个。

如果我从 docker-compose.yml 中删除卷,我将获得回写权限,但我无法从主机编辑或保留 wp-content 文件。

我只想要一个简单的 Wordpress 开发环境。 有没有办法让它与 Docker for Windows 一起工作,还是我必须重新使用虚拟机?

编辑:根据this,不可能使用 Docker for Windows 托管挂载卷并且只有 755 权限。

它没有指定容器中已安装卷的所有者是否可以从 root:root 更改。我尝试了各种方法在正在运行的容器中执行此操作(chown 似乎默默地失败),以及尝试在 docker-compose.yml 中添加各种“用户:...”但没有成功。如果无法设置或修改共享卷的所有者,则 Wordpress 无法写入该共享卷。

一种可能的解决方案可能是在开发过程中使用挂载的卷(即在 Windows 主机上使用 Sublime 编写代码时),然后在我需要授予 Wordpress 写权限时移除挂载(例如更新插件或添加媒体 -基本上只要它实际需要运行)。听起来很可怕,但似乎我的选择有限。

如果有人有任何其他建议,仍然会喜欢一个好的 Windows 工作流程。我希望有一种方法可以更改容器中已安装卷的所有者。我还没有找到任何可以明确说明这可能或不可能的信息,所以希望得到一些关于这方面的指导。

【问题讨论】:

    标签: wordpress docker docker-compose docker-for-windows


    【解决方案1】:

    这里有几个选项:

    1. 在 compose 文件中使用 user: root 以 root 身份启动容器。
    2. 使用FROM wordpress 构建您自己的 Docker 映像,该映像只需扩展 wordpress 和RUN chmod -R 766 /var/www/html/wp-content
    3. 使用docker exec --user root -it <container> bash 手动进入当前运行的容器并运行chmod -R 766 /var/www/html/wp-content

    【讨论】:

    • 我尝试了方法 1 和 3,但它们对我不起作用。对于方法 1,默认情况下它以 root 身份运行(我已经通过进入容器并运行 whoami 进行检查),但无论我尝试过,但 Wordpress 仍然无法写入,chmod 对 wp- 没有任何影响内容文件夹。对于方法 3,如果我运行 chmod,对 wp-content 文件夹也没有影响。我认为共享卷时权限被“锁定”,这是整个问题。
    • @Ben - 你有没有接近这个问题的可行解决方案?从 Linux 切换到 Windows 10 后,我现在正在努力解决同样的问题。任何帮助或提示将不胜感激。提前致谢。
    猜你喜欢
    • 1970-01-01
    • 2018-06-22
    • 2018-04-28
    • 2021-09-20
    • 2017-03-01
    • 2021-07-02
    • 2018-10-20
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多