10up Releases WP Docker, an Open Source Docker Configuration for Local WordPress Development

WP Docker is a new project from 10up that makes it easy to set up a local WordPress development environment with Docker. Last year 10up worked with Joyent, a cloud infrastructure company, to create a production-ready implementation of WordPress in Docker. After their experience with this project, 10up created WP Docker as a simple, open source development environment based on docker-compose.

Docker is a virtualization technology that allows developers to work on websites and applications in isolated containers. It has many advantages over Vagrant, which takes up a lot more space with each virtual machine having its own operating system included. Docker runs off of a single Linux instance and the containers hold the application and its dependencies.

“While still viable, VVV, Vagrant, and Virtual Box/Hyper-V take up extreme disk space and are slow to provision, start up, and SSH into,” 10up Director of Engineering Taylor Lovett said. “Because of this, engineers tend to use one ‘mega’ VVV install for all of their development websites. This workflow poses a number of problems: system service version and configuration ‘normalization’ across all projects (i.e. PHP 7 on everything when some projects run PHP 5.6 in production), and legacy clutter (i.e. old websites and system packages undeleted).”

WP Docker is much more lightweight than VVV and starts up much faster. It comes packaged with Elasticsearch by default, so 10up’s ElasticPress plugin works out-of-the-box. The environment includes the following technologies by default:

  • PHP7
  • MariaDB
  • NGINX
  • Elasticsearch
  • Gearman
  • Memcached

VVV was started by a former 10up employee, Jeremy Felt, and the company still uses the project for local development in many cases. Certain instances, however, may lend themselves more to using VVV as opposed to WP Docker. Lovett said those include projects that are highly dependent on specific versions of system packages, such as PHP 5.6 and Elasticsearch 5.1.

“WP Docker lends itself well to enterprise clients that want to version control an environment specifically for their web application to be distributed to developers,” Lovett said. “This is common for large clients with large development teams. WP Docker lets a team standardize on a local setup which decreases bugs and ‘I see this but you don’t’ issues.”

Lovett said teams at 10up are still using VVV more often than WP Docker since it’s still quite new, but the company plans to let project requirements and team preferences drive adoption. The project is available on GitHub and has nearly 80 stars less than a week after its release.

17 Comments


  1. They couldn’t have picked another name?

    WPdocker.com already exists and is a white labeled WP hosting as a service solution using Docker containers.

    Report


    1. Hey Trent,

      Thanks for the heads-up! We didn’t realize you had a SaaS offering with the same name–it just seemed like a straightforward and descriptive title for what we’d built.

      We’re brainstorming some alternative names now and will get it changed up shortly. Hope you’re able to take it for a spin–we’d love to know what you think!

      Best,
      Vasken

      Report


      1. Alright.

        Will check it out. We should be able to use most of your stack on our platform actually. Could be some interesting opportunities there.

        Report


      2. Hey Trent,

        Just wanted to let you (and the editors here at WPTavern) know that we’ve updated the repo url and name to “WP Local Docker.”

        Would love to hear any feedback you’ve got as you take it for a spin!

        Happy Friday,
        Vasken

        Report


    2. I’ve got my own private repo on GitHub named wp-docker, it’s an incredibly generic term.

      A quick search of GitHub reveals a hundred plus repos with name variations wp-docker / docker-wp.

      Report


  2. Any specific reasons why this is better or different from Local by Flywheel? That also spins up a docker instance specifically for local development.

    Report


    1. One difference is Flywheel supports multiple projects per one install of Flywheel. This (WP-Docker) evidently is designed to be versioned directly with your WordPress project so is a one-project-at-a-time box.

      Report


    2. Local is very full-featured and great for a lot of use-cases (in fact, several 10uppers use it regularly), but our goal was to cut out everything we could and keep the environment as light as possible, so for example, our solution doesn’t use VirtualBox as Local does

      Report


      1. Huh, cool! That makes sense.

        Report


  3. FYI: Vagrant now includes support for Docker as a provider out of the box, this eliminates the mentioned extreme space and slow to provision issues.

    Report


    1. I first read “German” as feature. … OK weird but nice for me … Oh it says Gearman ^^

      Report


  4. I have built a more CLI-oriented project utilizing Docker and Bash (includes Windows support), that focuses more on collaboration and sharing multiple environments between developers. In my office we share a single Nimble repo for dozens of our clients.

    https://github.com/johnrom/nimble

    Additionally, Nimble allows you to completely change any aspect of the environment for any given project or many projects at once (thus the name), allowing access directly to the docker-compose templates. It might not suit everyone’s needs, but I thought it might be of interest.

    (PS., it does not have an original name either. Sorry!)

    Report


  5. The current WP Docker project is a good start but it can only handle one WordPress website per Docker environment instead of a single Docker environment for all your WordPress websites.
    I’m planning on migrating to Laradock which provides a single Docker environment for all my WP projects.

    Report

Comments are closed.