wordpress - 通过docker compose运行时如何将wordpress wp-content文件夹存储在本地机器中

标签 wordpress docker docker-compose

我已经在我的本地机器中设置了虚拟机共享文件夹。我的 Docker 撰写文件中有以下代码用于 Wordpress 服务。但不确定这些卷在这里是如何工作的。你能解释一下吗?

version: '2'

services:

  database:
    image: mysql:5.6
    volumes:
      - ./mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
    restart: unless-stopped

  wordpress:
    image: wordpress:4.9.6
    ports:
      - 49160:80
    links:
      - database:mysql
    volumes:
      - ./wordpress:/var/www/html/wp-content
    environment:
      WORDPRESS_DB_PASSWORD: password
    restart: unless-stopped

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - database:db
    ports:
      - 8080:80

上面这行代码是否意味着,是否需要在我当前运行的 docker-compsose.yml 文件中创建一个 WordPress 文件夹?

或者它与我在虚拟机中的共享文件夹有什么关系?

最佳答案

基本上卷是 Docker 的工具,因此它可以保留数据。 Docker 容器通常设计为无状态的,但如果您需要在运行之间保留状态/信息,那就是卷的用武之地。

您可以通过以下方式创建未命名卷:

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

这会将您的 wp-content 文件夹保留在内部卷存储中,而无需特定名称。

第二种方法是给它一个名字,使它成为一个命名卷:
volumes:
  - mywp:/var/www/html/wp-content

最后一种类型,也是您正在做的,称为卷绑定(bind)。这基本上将文件夹的内容绑定(bind)/挂载到容器中的主机上。因此,如果您在任一位置更改文件,它将保存在另一个位置。
volumes:
  - ./wordpress:/var/www/html/wp-content

为了使用您的卷绑定(bind),您需要在运行 docker-compose.yaml 的文件夹(通常是您的根文件夹)中创建文件夹“wordpress”。之后,当您的安装在容器内发生变化时,它也会在绑定(bind)时发生变化,反之亦然。

编辑:在您的特定情况下,以下应该有效:
version: '3.2'

services:

  database:
    image: mysql:5.6
    volumes:
      - ./mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
    restart: unless-stopped

  wordpress:
    image: wordpress:4.9.6
    ports:
      - 49160:80
    links:
      - database:mysql
    volumes:
      - type: bind
        source: ./wordpress
        target: /var/www/html/wp-content
    environment:
      WORDPRESS_DB_PASSWORD: password
    restart: unless-stopped

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - database:db
    ports:
      - 8080:80

关于wordpress - 通过docker compose运行时如何将wordpress wp-content文件夹存储在本地机器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51267836/

相关文章:

docker - 从容器运行 Ga特林

docker - docker ubuntu镜像中的chrome路径是什么

mysql - 对 Wordpress 数据库的查询返回帖子的无效类别

docker - DisabledBackend : Erratic Behavior with Celery, Redis & Flask

php - 在 Woocommerce 结帐页面中将产品添加到购物车的复选框字段

docker stack 使用 GPU 部署,但找不到 nvidia 设备

docker - 使用compose将容器部署到docker swarm:发布不允许发布其他属性

nginx - "jrcs/letsencrypt-nginx-proxy-companion" docker 镜像 : too many certificates already issued for exact set of domains

apache - 无法安装网站网络 - Wordpress 和 XAMPP

javascript - 在 onTime 函数 jwplayer 中只执行一次 ajax 请求