Automate Marketing Initiatives with Salesforce Marketing Cloud Learn More

Quick Guide to Implement WordPress On Docker in Just 10 Min?



Published On:

WordPress is an opensource, easy to build CMS (Content Management System) proudly built with a combination of PHP and MySQL. It is barely impossible that a person doesn’t know about it or hasn’t heard about WordPress. WordPress is a popular choice for a Web Developer when creating different types of websites, from blogs to eCommerce sites.


To run a WordPress site, we need LAMP (Linux, Apache, MySQL, and PHP) or LEMP (Linux, Nginx, MySQL, and PHP) stack, which can take time 3 times meaning local, staging, and production servers. However, by using Docker and Docker Compose, we can simplify the process of setting up preferred stack and installing WordPress. What Is Docker? – Docker is open-source software that creates environments to build, share and run an application. Hence, you develop, test, and run multiple applications on the same machine.


In this article, we will build a multi-container WordPress install means WordPress Containerization With Docker, so we are going to create containers for MySQL Database, PhpMyAdmin, and WordPress itself.


Install Docker 

To install Docker CE please follow the official website, based on your Operation System. 

Install Docker Compose 

To install Docker CE please follow the official website, based on your Operation System.  

Setup WordPress on Docker

Let’s move forward and configure our Docker compose for WordPress. One can do this by using Docker CLI, but here we are going to follow the more simple and systematic method that Docker compose. 

  1. Create a new Directory “wordpress” for WordPress:
    mkdir ~/wordpress/

    then move into it: 

    cd ~/wordpress/
  2. Create a new folder “.docker” in the newly created folder, this folder will contain all our extra config files:
    mkdir .docker
  3. In this “.docker” folder create a file called “uploads.ini”, as the name stats it will provide us control on PHP configurations. Let’s put the content below, you can modify these or addon more based on your project needs –
    file_uploads = On 
    memory_limit = 128M 
    upload_max_filesize = 128M 
    post_max_size = 128M 
    max_execution_time = 120
  4. Now create a file in “.docker” folder called “php-apache.conf”, this will set up Virtual Host for our us. Paste the content below, you can modify these or addon more based on your project needs –
    # Virtual Hosts 
    <VirtualHost *:80> 
        ServerAdmin webmaster@assetlibrary.test 
        DocumentRoot "/var/www/html" 
        ServerName example.wordpress 
        #ErrorLog "logs/example.wordpress-error.log" 
        #CustomLog "logs/example.wordpress-access.log" common 


  5. Now let’s create a file “.env” in root folder that is “wordpress” this file contains all environment variables DB details etc., and paste the below content into it –
    # The table prefix (Required) of the WordPress database used in our website 
    # Ex. wp_ 
    # You can disable any of the plugins that are not needed for development, ex. Bulletproof Security or any SEO plugin. 
    # Comma (,) separated list as a string (no spaces), leave blank if you don't want to disable plugins.  
    # Ex. plugin-folder-name-1,plugin-folder-name-2 
    ### Defaults - can be left as it is for basic usage #################################################### 


  6. Now let’s create a file called “docker-compose.yml”, here this is the main file that holds all the docker configurations for us. Paste the content below in the file. 
    Let’s understand a little about the configuration from this file. As you can see there are 2 heads of services and volumes 
    A. There are 3 services dbwordpress, and phpmyadmin –
    db: Used official mysql image for this service, you can have a look here. 
    wordpress: I used an official wordpress image for this service, you can have a look here. 
    phpmyadmin: I used an official phpmyadmin image for this service, you can have a look here. 
    B. There is a volume named persistent, that is used for mysql. It means that our DB volume will be persistent whenever we start the container. One can change this name if he wants to, I used persistent to remember its feature.
        version: "3.9" 
                container_name: assetsdb 
                image: mysql 
                    - ./dump:/docker-entrypoint-initdb.d 
                    - persistent:/var/lib/mysql 
                restart: always 
                    - '3309:3306' 
                    MYSQL_ROOT_PASSWORD: $db_root_password 
                    MYSQL_DATABASE: $db_name 
                    MYSQL_USER: $db_user 
                    MYSQL_PASSWORD: $db_password 
                #  - db 
                    - db 
                image: wordpress:latest 
                    - ./wp-content:/var/www/html/wp-content 
                    - ./apache-logs:/var/log/apache2 
                    - ./.docker/php-apache.conf:/etc/apache2/sites-enabled/000-default.conf 
                    - ./.docker/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini 
                    - "80:80" 
                restart: always 
                    WORDPRESS_DB_HOST: $db_host 
                    WORDPRESS_DB_USER: $db_user 
                    WORDPRESS_DB_PASSWORD: $db_password 
                    WORDPRESS_DB_NAME: $db_name 
                    WORDPRESS_TABLE_PREFIX: $db_table_prefix 
                    WORDPRESS_DEBUG: $wp_debug_mode 
                    DISABLED_PLUGINS: $wp_plugins_to_disable 
                image: phpmyadmin 
                restart: always 
                    - 8089:80 
                    - db:db 
                    MYSQL_USER: $db_user 
                    MYSQL_PASSWORD: $db_password 
                    MYSQL_ROOT_PASSWORD: $db_root_password 
  7. This is an optional step to follow, that is to add our Virtual Host in Operating System’s host file. 
    For Windows, with Administrative rights:  
    Hosts file (hosts) location of the in windows – c:\Windows\System32\Drivers\etc\hosts 
    For Linux, with root access use following command:
    sudo nano /etc/hosts

    Append the following line in the file: example.wordpress

    Now you are ready to use your WordPress installation at the domain http://example.wordpress after running the container and then install WordPress in Docker Container. 


Build, (re)create, start, and attache to containers

You can start the container with the up command in Daemon Mode (by adding -d as an argument). Your WordPress will be running and available at this link 

docker-compose up

Starting containers 

 Start existing containers using the start command –

docker-compose start

Stopping containers 

docker-compose stop

Removing containers 

The use of down command will stop and remove all the containers –

docker-compose down

Use -v if you need to delete the database volume that is used to maintain the database –

docker-compose down –v


You will have to visit to access phpMyAdmin after starting the container. 

MySQL default username is root, and the password is the same as supplied in the .env file. 

Please go through the official documentation here for more commands in details. 

A place for big ideas.

Reimagine organizational performance while delivering a delightful experience through optimized operations.


Docker is the best open-source software tool to create containers. Its simple environment configuration helps us in maintaining server resources. When we want simple and ready to use environment on each level of the SDLC (Software Development Life Cycle) Docker is a favorite tool.


In this article, we have learned Docker basics and how we can setup WordPress in Docker using Docker Compose. I hope this article will be helpful, we will glad to help you in any of your queries so please be open to ask any questions in the future.


Next Steps


Now furthermore I have more ideas that we can implement and extend the above setup: 


  1. Setting-up multisite WordPress in the Docker container 
  2. Setting-up and apply SSL certificates for the Virtual Host 
  3. Using Cron jobs within the Docker Container
  4. And many more you can think of


Top Stories

Microsoft Azure Cloud
5 Reasons to Use Microsoft Azure Cloud for Your Enterprise
Cloud computing is the stream of modern computer science technology in which we learn how to deliver different services through the Internet. These services include tools like servers, data storage, databases, networking, and software. Cloud computing is an optimized solution for people and enterprises looking for several benefits, such as
Cloud Computing Platform
What Makes Microsoft Azure a Better Cloud Computing Platform
Microsoft has leveraged its continuously expanding worldwide network of data centers to create Azure cloud, a platform for creating, deploying, and managing services and applications anywhere. Azure provides an ever-expanding array of tools and services designed to fulfill all your needs through one convenient, easy-to-manage Platform. Azure sums up the
Azure Cloud
Things You Should Know About Microsoft Azure Cloud Computing
Microsoft Azure is a cloud computing service provided by Microsoft. Azure has over 600 benefits, but overall, Azure is a web-based platform for building, testing, managing, and deploying applications and services. Azure offers three main functional areas. Virtual machines, cloud services, and application services. Microsoft Azure is a platform for
Microsoft Azure Cloud Computing
What Are the Options for Automation Using Microsoft Azure?
Automation is at the forefront of all enterprise IT solutions. If processes overlap, use technical resources to automate them. If your function takes a long time, find a way to automate it. If the task is of little value and no one needs to work on it, automate it. This
Apache Airflow
How to Create and Run DAGs in Apache Airflow
Apache Airflow is an open source distributed workflow management platform built for data orchestration. Maxime Beauchemin first started his Airflow project on his Airbnb. After the project's success, the Apache Software Foundation quickly adopted his Airflow project. Initially, he was hired as an incubator project in 2016 and later as
Apache Airflow Automation
How Easy is it to Get Started with Apache Airflow?
Apache Airflow is a workflow engine that efficiently plans and executes complex data pipelines. It ensures that each task in your data pipeline runs in the correct order and that each job gets the resources it needs. It provides a friendly UI to monitor and fix any issues. Airflow is


          Keep an eye on your inbox for the PDF, it's on its way!

          If you don't see it in your inbox, don't forget to give your junk folder a quick peek. Just in case. 

              You have successfully subscribed to the newsletter

              There was an error while trying to send your request. Please try again.

              Zehntech will use the information you provide on this form to be in touch with you and to provide updates and marketing.