Deploy Wordpress through Docker

It's now easier than ever to deploy Wordpress through docker. The tutorial below will allow you to deploy Wordpress, but unlike other tutorials, it will use volumes in order to persist your plugins, themes, and database across containers being destroyed/replaced. Everything is containerized so if you decide to move to another server, all you have to do is copy the files across and run one command. No need to run database dumps or a long list of commands to set permissions.

Steps

Create a folder that everything will go into. When you wish to move to another server, all you will need to do is copy this folder across.

Navigate into that folder you just created.

Copy and paste the following contents into a file called docker-compose.yml. Make sure to replace [strong root password] and [wordpress db password] with some strong randomly generated passwords.

version: '2'
services:
  db:
    image: mysql:5.7
    volumes:
      - "./db-data/db:/var/lib/mysql"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: [strong root password]
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: [wordpress db password]

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    working_dir: /var/www/html
    volumes:
     - ./wordpress/wp-content/:/var/www/html/wp-content
    links:
      - db
    ports:
      - "80:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: [wordpress db password]

Install docker and docker-compose if you haven't already.

Now simply execute docker-compose up -d and navigate to your server's IP or hostname in your browser after a minute or two.

References

Author

Programster

Stuart is a software developer with a passion for Linux and open source projects.

comments powered by Disqus
We are a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for us to earn fees by linking to Amazon.com and affiliated sites. More info.