在Windows上使用Docker时的Wordpress写访问权限

时间:2018-07-15 14:00:09

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

我想设置一个本地Wordpress开发环境,因此我正在尝试Windows和WSL的Docker。我使用了标准映像(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:root755。因此Wordpress无法更新/添加插件或从管理员上载其他文件-我也不能对此进行chown或chmod。 / li>

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

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

编辑:根据this的说法,无法使用Docker for Windows主机装载卷,并且除755权限外,其他任何内容都不能。

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

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

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

1 个答案:

答案 0 :(得分:0)

这里有两个选项:

  1. 使用撰写文件内的user: root以根用户身份启动容器。
  2. 构建自己的Docker映像,使用FROM wordpress扩展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