Follow up on Docker + Wordpress

My last post discusses the relative ease with which I set up a basic Wordpress development environment in Docker for a school project. While I stand by most of what I wrote in that post, it hasn't been entirely smooth sailing from there.

Permissions, where art thou?

Not everything works 100% as expected. Specifically, I ran into problems trying to install plugins via the web-based admin panel in Wordpress. I did a bit of digging around and it appears that the easiest solution to the problem is simply to download the plugins and copy them over to the docker-volume plugin location manually. I did this with a couple plugins and they work fine.

Oddly, once installed the plugins don't have any functional problems, nor are they prevented from saving settings or configurations, or modifying other aspects of my Wordpress site. Similarly, I haven't had any trouble adding / updating posts or modifying other settings through the Wordpress web-based dashboard.

So for now I'm assuming it's something with the way the scripts are written specifically for plugin installation. If I had to guess, I would speculate (and hope!) that there's code present to prevent malicious plugins from doing certain things, and that however Docker handles permissions internally in the container with a mounted volume isn't playing nicely with that part of the plugin installation.

The other possibility I investigated -- because it is often the cause of similar error messages in traditional wordpress installations -- was that I had a permissions problem somewhere. However, I went through and manually inspected everything, and recursively reset the permissions on the appropriate folders, and still no dice. So that was a dead-end for me, and manually copying / pasting works fine for my limited needs at the moment.

Long term solution

My long term solution was to dump the problem onto another member of our team who has specifically taken on the role of system administration / dev-ops for this project. :)

I told him that we can use Docker or Vagrant (or some other virtual machine technology) -- really whatever he wants -- as long as it's relatively easy for everyone to get up-to-speed with a new dev environment and as long as we have a simple and reliable way to replicate / syncronize changes between dev / testing / production environments.