Public | Automated Build

Last pushed: a year ago
Short Description
Webdesign & Production by Oben Interactive -
Full Description

Visible Wordpress Starter

A Docker Wordpress development environment by the team at Visible and some awesome contributors. Our goal is to make Wordpress development slightly less frustrating.


Well, to run a Docker environment, you will need Docker. The Dockerfile is only for an Apache+PHP+Wordpress container, you will need a MySQL container to run a website. We use Docker Compose 1.6+ for the orchestration.

Getting started

This project has 2 parts: the Docker environment and a set of tools for theme development. To quickly get started, you can simply run the following:

# copy the files
git clone
rm -rf .git Dockerfile

# start the website at localhost:8080
docker-compose up

This repository does 2 things:

  1. Include the files to create a wordpress Docker image (visiblevc/wordpress)
  2. Include build tools to develop wordpress themes (gulp)

If you don't plan to build the Docker image yourself, you shouldn't care for 1. We publish the image on Docker Hub and you can grab it directly from there. That's why you can safely remove the Dockerfile and

The reason we remove .git, and is because we assume you will start your own repository, named after your project. There is virtually no benefit keeping ties with our remote git repository.


We wrote a series of articles explaining in depth the philosophy behind this project:

The Docker environment

The only thing you need to get started is a docker-compose.yml file:

version: '2'
    image: busybox
      - /app
      - /var/lib/mysql
    image: visiblevc/wordpress:latest
      - db
      - 8080:80
      - 443:443
      - ./data:/data # Required if importing an existing database
      - ./wp-content/uploads:/app/wp-content/uploads
      - ./yourplugin:/app/wp-content/plugins/yourplugin # Plugin development
      - ./yourtheme:/app/wp-content/themes/yourtheme   # Theme development
      - ./wp-content/themes/3clicks:/app/wp-content/themes/3clicks
      - ./wp-content/themes/3clicks-child-theme:/app/wp-content/themes/3clicks-child-theme
      DB_NAME: wordpress
      DB_PASS: root # must match below
      PLUGINS: >-
      WP_DEBUG: 'true'
    image: mysql:5.7
      - 3306:3306
      - data:/var/lib/mysql
  data: {}
MySQL Credentials
  • username: root
  • password: root (can be changed with the MYSQL_ROOT_PASSWORD and DB_PASS environment variables)
  • database: wordpress (can be changed with the DB_NAME environment variable)
  • admin email: admin@${DB_NAME}.com
WordPress Container Environment variables
  • DB_PASS (required): Must match MYSQL_ROOT_PASSWORD of the mysql container
  • DB_NAME (optional): Defaults to wordpress
  • ADMIN_EMAIL (optional): Defaults to admin@${DB_NAME}.com
  • WP_DEBUG (optional): Defaults to false
  • THEMES (optional): Comma-separated list of themes you want to install.
  • PLUGINS (optional): Comma-separated list of plugins you want to install.
  • SEARCH_REPLACE (optional): Comma-separated string in the form of current-url,replacement-url.
    • When defined, current-url will be replaced with replacement-url on build (useful for development environments utilizing a database copied from a live site).
    • IMPORTANT NOTE: If you are running Docker on Mac or PC (using Docker Machine), your replacement url MUST be the output of the following command: echo $(docker-machine ip <your-machine-name>):8080
DB Container Environment variables
  • MYSQL_ROOT_PASSWORD (required): Must match DB_PASS of the wordpress container

Working with databases

If you have an exported .sql file from an existing website, drop the file into the data/ folder. The first time you run the container, it will detect the SQL dump and use it as a database. If it doesn't find one, it will create a fresh database.

If the SQL dump changes for some reason, you can reload the database by running:

docker-compose run wordpress wp db import "$(find /data/*.sql | head -n 1)" --allow-root

If you want to create a dump of your development database, you can run:

docker-compose run wordpress wp db export /data --allow-root

Finally, sometimes your development environment runs on a different domain than your live one. The live will be and the development localhost:8080. This project does a search and replace for you. You can set the SEARCH_REPLACE:,localhost:8080 environment variable in the docker-compose.yml.

Use wp-cli

You can access wp-cli by running npm run wp .... Here are some examples:

npm run wp plugin install <some-plugin>
npm run wp db import /data/database.sql


You can find Development instructions in the Wiki.

Docker Pull Command