DEV Community

Antoine
Antoine

Posted on • Edited on

Set up WordPress with Docker compose

Docker compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.

Itʼs worth noting that all required images are acquired from Docker Hub:

  • WordPress - the official WordPress Docker image with all WordPress files, Apache server and PHP;
  • MySQL - required for MySQL root user, password, and database connection variables;
  • phpMyAdmin - a web application for managing databases.

Check Docker Compose version
Open your favorite command line interface and check the Docker Compose installation version:
docker compose version

This will confirm that the Compose module is working correctly.

Create a project folder
Create a new project directory for WordPress application and navigate to it with the following command:
mkdir ~/wordpress && cd ~/wordpress

Create the docker-compose.yml file
Using your preferred text editor, create a new docker-compose.yml file and add the contents below:

version: "3" 
# Defines which compose version to use
services:
  # Services line define which Docker images to run. In this case, it will be MySQL server and WordPress image.
  db:
    image: mysql:5.7
    # image: mysql:5.7 indicates the MySQL database container image from Docker Hub used in this installation.
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: MyR00tMySQLPa$$5w0rD
      MYSQL_DATABASE: MyWordPressDatabaseName
      MYSQL_USER: MyWordPressUser
      MYSQL_PASSWORD: Pa$$5w0rD
      # Previous four lines define the main variables needed for the MySQL container to work: database, database username, database user password, and the MySQL root password.
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    restart: always
    # Restart line controls the restart mode, meaning if the container stops running for any reason, it will restart the process immediately.
    ports:
      - "8000:80"
      # The previous line defines the port that the WordPress container will use. After successful installation, the full path will look like this: http://localhost:8000
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: MyWordPressUser
      WORDPRESS_DB_PASSWORD: Pa$$w0rD
      WORDPRESS_DB_NAME: MyWordPressDatabaseName
# Similar to MySQL image variables, the last four lines define the main variables needed for the WordPress container to work properly with the MySQL container.
    volumes:
      ["./:/var/www/html"]
volumes:
  mysql: {}
Enter fullscreen mode Exit fullscreen mode

Run Docker compose
With the docker-compose.yml created, run the following command in the same wordpress directory to create and start the containers:
docker compose up -d

Top comments (0)