How to Host Wordpress Using Docker

Let’s go for our docker-compose.yml first.

 1version: '3'
 2
 3services:
 4  wp:
 5    image: wordpress:latest
 6    ports:
 7      - ${IP}:80:80
 8    volumes:
 9      - ./php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
10      - ./wordpress:/var/www/html
11    environment:
12      WORDPRESS_DB_HOST: db
13      WORDPRESS_DB_NAME: "${DB_NAME}"
14      WORDPRESS_DB_USER: root
15      WORDPRESS_DB_PASSWORD: "${DB_ROOT_PASSWORD}"
16    depends_on:
17      - db
18
19  pma:
20    image: phpmyadmin/phpmyadmin
21    environment:
22      PMA_HOST: db
23      PMA_PORT: 3306
24      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
25    ports:
26      - ${IP}:8080:80
27    links:
28      - db:db
29
30  db:
31    image: mysql:latest
32    ports:
33      - ${IP}:3306:3306
34    command: [
35        '--default_authentication_plugin=mysql_native_password',
36        '--character-set-server=utf8mb4',
37        '--collation-server=utf8mb4_unicode_ci'
38    ]
39    volumes:
40      - ./wp-data:/docker-entrypoint-initdb.d
41      - db_data:/var/lib/mysql
42    environment:
43      MYSQL_DATABASE: "${DB_NAME}"
44      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
45
46volumes:
47  db_data:

Here comes a relavant php.conf.ini file:

1file_uploads = On
2memory_limit = 500M
3upload_max_filesize = 30M
4post_max_size = 30M
5max_execution_time = 600

Environmental variables will be needed, right? Here comes the .env file:

1IP=127.0.0.1
2DB_ROOT_PASSWORD=password
3DB_NAME=wordpress

You will have to export a SQL dump sometimes. (I don’t do that though 😉)
Here comes the export_dump.sh file:

1#!/bin/bash
2_now=$(date +"%m_%d_%Y")
3_file="wp-data/data_$_now.sql"
4
5# Export dump
6EXPORT_COMMAND='exec mysqldump "$MYSQL_DATABASE" -uroot -p"$MYSQL_ROOT_PASSWORD"'
7docker-compose exec db sh -c "$EXPORT_COMMAND" > $_file
8sed -i 1,1d $_file

All thing left is to run the container.

1docker-compose up -d

Your container is running? Done awesome!
Happy dockerizing, Gents! 🙂