Skip to content

Instantly share code, notes, and snippets.

@mt-shihab26
Last active June 25, 2023 07:19
Show Gist options
  • Select an option

  • Save mt-shihab26/fde677065e167b0bf780b58851b7b0e6 to your computer and use it in GitHub Desktop.

Select an option

Save mt-shihab26/fde677065e167b0bf780b58851b7b0e6 to your computer and use it in GitHub Desktop.

Wordpress & Docker

This file will setup Wordpress, MySQL & PHPMyAdmin with a single command. Add the code below to a file called "docker-compose.yaml" and run the command

$ docker-compose up -d

# To Tear Down
$ docker-compose down --volumes

When ever any permission error just run

sudo chmod 777 -R <the-wp-site>
version: '3'

services:
  # Database
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    networks:
      - wpsite
  # phpmyadmin
  phpmyadmin:
    depends_on:
      - db
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - '8080:80'
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: password 
    networks:
      - wpsite
  # Wordpress
  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - '8000:80'
    restart: always
    volumes: ['./:/var/www/html']
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
    networks:
      - wpsite
networks:
  wpsite:
volumes:
  db_data:

version 2 of the docker-compose.yml

version: '3'

services:
  mysql:
    image: mysql:8
    volumes:
      - ./mysql_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    networks:
      - the-wp-site-net
  app:
    depends_on:
      - mysql
    image: wordpress:latest
    ports:
      - '8000:80'
    restart: always
    volumes:
      - './:/var/www/html'
    environment:
      WORDPRESS_DB_HOST: mysql:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
    networks:
      - the-wp-site-net
  phpmyadmin:
    depends_on:
      - mysql
    image: phpmyadmin/phpmyadmin:5
    restart: always
    ports:
      - '8080:80'
    environment:
      PMA_HOST: mysql
      MYSQL_ROOT_PASSWORD: password
    networks:
      - the-wp-site-net
networks:
  the-wp-site-net:

v3

version: '3'

services:
  mysql:
    image: mysql:8
    volumes:
      - ./mysql_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    networks:
      - the-wp-site-net
  app:
    depends_on:
      - mysql
    image: wordpress:php8.1-apache
    ports:
      - '8000:80'
    restart: always
    volumes:
      - './:/var/www/html'
    environment:
      WORDPRESS_DB_HOST: mysql:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
    networks:
      - the-wp-site-net
  phpmyadmin:
    depends_on:
      - mysql
    image: phpmyadmin/phpmyadmin:5
    restart: always
    ports:
      - '8080:80'
    environment:
      PMA_HOST: mysql
      MYSQL_ROOT_PASSWORD: password
    networks:
      - the-wp-site-net
networks:
  the-wp-site-net:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment