Skillversitas

Docker WordPress

How to run WordPress in Docker.

Docker WordPress

# Run WordPress with MySQL
docker run -d --name mysql \
  -e MYSQL_ROOT_PASSWORD=root \
  -e MYSQL_DATABASE=wordpress \
  -e MYSQL_USER=wordpress \
  -e MYSQL_PASSWORD=wordpress \
  -v mysql-data:/var/lib/mysql \
  -p 3306:3306 \
  mysql:8.0

docker run -d --name wordpress \
  --link mysql:mysql \
  -e WORDPRESS_DB_HOST=mysql:3306 \
  -e WORDPRESS_DB_USER=wordpress \
  -e WORDPRESS_DB_PASSWORD=wordpress \
  -e WORDPRESS_DB_NAME=wordpress \
  -v wordpress-data:/var/www/html \
  -p 80:80 \
  wordpress:latest

docker-compose.yml

version: '3.8'

services:
  database:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - app-net

  wordpress:
    image: wordpress:latest
    environment:
      WORDPRESS_DB_HOST: database:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress-data:/var/www/html
    ports:
      - "80:80"
    depends_on:
      - database
    networks:
      - app-net

networks:
  app-net:

volumes:
  mysql-data:
  wordpress-data:

Use Case: WordPress Application

# Run WordPress
docker-compose up -d

# Access WordPress
# http://localhost/wp-admin

Everyday Use Case

Case: An admin needs a CMS for the myapp website.

# Run WordPress
docker-compose up -d

# Back up
docker exec mysql mysqldump -u root -proot wordpress > backup.sql

# Update
docker-compose pull
docker-compose up -d

Best Practices

  1. Use named volumes: For persistent data
  2. Secure passwords: Don't use the defaults
  3. Back up regularly: For data safety
  4. Update regularly: For security

Conclusion

WordPress in Docker is easy to set up. Use docker-compose to manage WordPress and MySQL.