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: {}
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