【问题标题】:How to store the wordpress wp-content folder in local machine when running through docker compose通过docker compose运行时如何将wordpress wp-content文件夹存储在本地机器中
【发布时间】:2018-07-10 14:27:34
【问题描述】:

我已经在我的本地机器上设置了虚拟机共享文件夹。我的 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 文件夹?

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

【问题讨论】:

    标签: wordpress docker docker-compose


    【解决方案1】:

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

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

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

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

    第二种方法是给它一个名字,使它成为一个命名卷:

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

    最后一种类型,也就是你正在做的,称为卷绑定。这基本上将文件夹的内容绑定/挂载到容器中的主机上。因此,如果您在任一位置更改文件,它将保存在另一个位置。

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

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

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

    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
    

    【讨论】:

    • 好的,我已经在 docker-compose.yml 所在的文件夹中手动创建了 WordPress 文件夹。但即使在我运行容器之后,该文件夹也没有填满 wp-content 文件夹内容。我正在编辑我的问题并添加我的整个 dockercompose 文件。你能检查一下吗?顺便说一句,当我在浏览器中运行应用程序时,它会通知我“主题目录“twentyseventeen”不存在。错误:主题目录为空或不存在。请检查您的安装。”
    • 当我执行到 Wordpress docker 容器时,我什至看不到空的 wp-content 文件夹。
    • @m9m9m 我编辑了我的答案,说明我将如何在你的情况下进行绑定。请注意,我已经将版本从 2 提升到 3.2,因此它可以使用这种语法。
    【解决方案2】:

    将卷添加到您的docker-compose.yml 文件将使您能够将本地文件系统中的内容“挂载”到正在运行的容器中。

    所以,关于这里的以下行:

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

    这意味着本地wordpress 目录中的任何内容都将放在容器内的/var/www/html/wp-content 目录中。这很有用,因为它允许您在本地开发主题和插件并自动将它们注入正在运行的容器中。

    为避免混淆,我建议将 wordpress 重命名为其他名称,因此很明显,您只是在安装 WordPress 内容,而不是核心文件本身。

    我在这里有类似的设置,以防您需要其他参考:

    https://github.com/alexmacarthur/wp-skateboard

    【讨论】:

      猜你喜欢
      • 2020-02-09
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多