Cogito ergo sum

How to set up a local WordPress development server using Docker1 min read

The following docker-compose.yml file setups a local WordPress docker instance alongside a MySql server and an Adminer web app which can be used as an alternative to PhpMyAdmin.

version: '3.9'
services:
  wp_mysql:
    image: mysql:latest
    container_name: wp_mysql
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
    restart: on-failure
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: wp_db
      MYSQL_USER: wp_db_user
      MYSQL_PASSWORD: wp_db_user_pass
    ports:
      - "6033:3306"
    volumes:
      - wp_mysql_volume:/var/lib/mysql

  wp_app:
    image: wordpress:latest
    environment:
      WORDPRESS_DB_HOST: wp_mysql
      WORDPRESS_DB_USER: wp_db_user
      WORDPRESS_DB_PASSWORD: wp_db_user_pass
      WORDPRESS_DB_NAME: wp_db
    volumes:
      - ./wp-data:/var/www/html/
    restart: on-failure
    ports:
      - 8081:80
  adminer:
    image: adminer
    restart: on-failure
    ports:
      - 8082:8080
volumes:
  wp_mysql_volume:

Save the above file on your disk, and from within the command line, run the following command: docker-compose up (assuming you have already installed docker-compose and docker on your system).

After that, you can head to the following URL http://localhost:8081/  to install WordPress and use it later on. Using this URL http://localhost:8082/, you will be able to access Adminer to inspect or edit the newly created MySQL database. For Adminer, use the same credentials you have specified in the docker-compose file. Adminer_interface_with_wordpress_Docker

Note we are using the name of the MySQL service here in the Server field!

Happy coding 🙂

About the author

Peshmerge Morad

Data Science student and a software engineer whose interests span multiple fields.

1 comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

By Peshmerge Morad
Cogito ergo sum