Volume mount when setting up Wordpress with docker
Asked Answered
A

2

31

Quickstart: Compose and WordPress proposes the following docker-compose.yml

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - dbdata:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    dbdata:

For persisting database data, a volume is created:

  • The docker volume db_data persists any updates made by Wordpress to the database.

but nothing is mentioned about the wordpress container...

Questions:

  1. should I follow the same approach and create volumes for the wordpress container, in order to persist the data that are going to be added (by posts, uploads, themes)?
  2. If yes, which paths / directories should I point to?
Ado answered 9/3, 2018 at 21:38 Comment(0)
A
50

Maybe I've found something...

volumes:
   - wp-content:/var/www/html/wp-content

According to this article:

...wp-content contains all user-supplied content. Basically anything you can upload to your site ends up here. That doesn’t include anything you write, mind you. Those things are stored in the WordPress database.

However, as long as you have both the database and your wp-content folder, you can always get your site back, even if everything else was lost.

This is also applied here: Setting up WordPress with Docker


To try it out:

version: '3.3'

services:
  db:
   image: mysql:5.7
   volumes:
     - dbdata:/var/lib/mysql
   restart: always
   environment:
     MYSQL_ROOT_PASSWORD: somewordpress
     MYSQL_DATABASE: wordpress
     MYSQL_USER: wordpress
     MYSQL_PASSWORD: wordpress

  wordpress:
   depends_on:
     - db
   image: wordpress:latest
   volumes:
     - wp-content:/var/www/html/wp-content
   ports:
     - "8000:80"
   restart: always
   environment:
     WORDPRESS_DB_HOST: db:3306
     WORDPRESS_DB_USER: wordpress
     WORDPRESS_DB_PASSWORD: wordpress

volumes:
  dbdata:
  wp-content:
Ado answered 10/3, 2018 at 0:0 Comment(5)
you also need to add it to volumes block at the bottom.Mopes
Thanks @chovy, I added the relative yaml. So, for those who want to use named volumes they have to add it to the "top-level" volumes key too.Ado
Now I wonder how to solve this using Docker swarm and some CDN, like aws s3 or digital ocean spaces.Nappe
@Mopes Why is it necessary to add to volumes block?Trantham
i think it is better to add all the html folder to the volume, like : volumes: - wp-content:/var/www/htmlDarceldarcey
D
1

replace volumes: with this one

volumes:
      - wordpress_data:/var/www/html
      - ./src:/var/www/html:cached
Dorree answered 13/3 at 11:23 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.