Skip to content
docktionary

Snippets / Compose

WordPress + MySQL

A classic WordPress site backed by MySQL, with persistent volumes.

wordpressmysqlphp
docker-compose.yml
services:
  wordpress:
    image: wordpress:6-php8.3-apache
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    volumes:
      # Only wp-content needs to persist (themes, plugins, uploads) --
      # WordPress core itself comes from the image on every recreate.
      - wp-content:/var/www/html/wp-content
    depends_on:
      - db

  db:
    image: mysql:8.4
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
      # Generates a random root password instead of leaving it blank --
      # the app user above never needs root, so nothing else has to know it.
      MYSQL_RANDOM_ROOT_PASSWORD: "1"
    volumes:
      - db-data:/var/lib/mysql

volumes:
  wp-content:
  db-data: