wordpress - 使用 Docker for Windows 时的 Wordpress 写访问权限
问题描述
我想设置一个本地 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
这意味着:
- 我可以在主机中编辑主题和插件文件(很棒),但是......
- 容器的 /var/www/html/wp-content 文件夹是 root:root 755。所以 Wordpress 无法更新/添加插件或从管理员上传其他文件 - 我无法 chown 或 chmod 这个。
如果我从 docker-compose.yml 中删除卷,我将获得回写访问权限,但我无法从主机编辑或保留 wp-content 文件。
我只想要一个简单的 Wordpress 开发环境。有没有办法让它与 Docker for Windows 一起工作,还是我必须回到使用虚拟机?
编辑:据此,无法使用 Docker for Windows 托管挂载卷,并且除了 755 权限之外没有任何权限。
它没有指定容器中已安装卷的所有者是否可以从 root:root 更改。我已经尝试了各种方法在正在运行的容器中执行此操作(chown 似乎默默地失败了),以及尝试在 docker-compose.yml 中添加各种“用户:...”但没有成功。如果无法设置或修改共享卷的所有者,则 Wordpress 无法写入该共享卷。
一种可能的解决方案可能是在开发过程中使用挂载的卷(即在 Windows 主机上的 Sublime 中编写代码时),然后在我需要授予 Wordpress 写权限时删除挂载(例如更新插件或添加媒体 - 基本上只要它实际上需要运行)。听起来很可怕,但似乎我的选择有限。
如果有人有任何其他建议,仍然会喜欢一个好的 Windows 工作流程。我希望有一种方法可以更改容器中已安装卷的所有者。我还没有找到任何明确说明这是或不可能的东西,所以希望得到一些关于这方面的指导。
解决方案
这里有几个选项:
user: root
使用compose 文件以 root 身份启动容器。- 构建您自己的 Docker 镜像,使用
FROM wordpress
和RUN chmod -R 766 /var/www/html/wp-content
docker exec --user root -it <container> bash
使用并运行手动进入当前运行的容器chmod -R 766 /var/www/html/wp-content
。
推荐阅读
- azure - 如何部署具有指定权限的 Databricks 集群?
- python - 导入数据库需要很多时间
- sql-server - SQL:将文件名作为值插入(使用 BULK INSERT)
- javascript - 将 keyup 方法绑定到两个 jQuery 对象
- c# - Visual Studio docker工具在调试时发布端口
- wcf - 如何使用 SOAP UI 工具测试 WCF wsHttpBinding 端点以及证书?
- bash - 在 CSV 文件中搜索第一列中的值,如果找到,将第二列的值向下移动一行
- prolog - 立即在控制台上写入
- swift - 应用内购买不更新沙盒下的所有订阅?
- java - 具有多个数据库服务器的分布式事务似乎不可靠