使用Docker设置WordPress时的卷挂载问题

30

快速开始:使用Compose和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:

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

  • db_data Docker 卷将持久保存 Wordpress 对数据库所做的任何更新。

但是关于 Wordpress 容器并没有提到任何内容...

问题:

  1. 我应该遵循相同的方法,并为 wordpress 容器创建卷,以持久保存要添加的数据(例如文章、上传文件、主题等)吗?
  2. 如果是,则应该指向哪些路径/目录?
1个回答

47

也许我找到了什么...

volumes:
   - wp-content:/var/www/html/wp-content
根据这篇文章:

... wp-content 包含所有用户提供的内容。基本上,您可以上传到网站的任何东西都会出现在这里。当然,这并不包括您编写的任何内容。那些会被存储在 WordPress 数据库中。

但是,只要您拥有数据库和 wp-content 文件夹,即使其他所有内容都丢失了,您也始终可以找回网站。

使用 Docker 设置 WordPress 时也适用此方法。


想试一下:

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:

3
你还需要在底部的“volumes”块中添加它。 - chovy
感谢@chovy,我添加了相对的yaml。因此,对于那些想要使用命名卷的人,他们也必须将其添加到“顶级”volumes键中。 - tgogos
现在我想知道如何使用Docker Swarm和一些CDN(例如AWS S3或Digital Ocean Spaces)来解决这个问题。 - holms
1
@chovy 为什么需要添加到卷块中? - caliph
我认为最好将所有HTML文件夹添加到卷中,例如: volumes:      - wp-content:/ var / www / html - abderrezague mohamed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接