使用 docker 设置 Wordpress 时的卷挂载

Volume mount when setting up Wordpress with docker

Quickstart: Compose and WordPress 提议如下 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:

为了持久化数据库数据,创建了一个卷:

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

但是没有提到 wordpress 容器...

问题:

  1. 我是否应该采用相同的方法并为 wordpress 容器创建卷,以便保留将要添加的数据(通过帖子、上传、主题)?
  2. 如果是,我应该指向哪些路径/目录?

也许我发现了什么...

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

根据this文章:

...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.

这里也适用:Setting up WordPress with Docker


尝试一下:

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: