Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 共享同一父级的Docker卷?_Wordpress_Docker_Docker Compose - Fatal编程技术网

Wordpress 共享同一父级的Docker卷?

Wordpress 共享同一父级的Docker卷?,wordpress,docker,docker-compose,Wordpress,Docker,Docker Compose,我正在尝试构建一个基于docker的WordPress开发环境,我希望能够拥有如下文件夹结构: . | --wp-data | --wp-content | --plugins | --themes 插件和主题也在wp内容中 这是我的docker撰写文件: version: '3.3' services: db: image: mysql:5.7 volumes: - ./wp-data:/var/lib/mysql

我正在尝试构建一个基于docker的WordPress开发环境,我希望能够拥有如下文件夹结构:

.
|
--wp-data
|
--wp-content
|
--plugins
|
--themes
插件和主题也在wp内容中

这是我的docker撰写文件:

version: '3.3'
services:
    db:
        image: mysql:5.7
        volumes:
            - ./wp-data:/var/lib/mysql
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: wordpress
            MYSQL_DATABASE: wordpress
            MYSQL_USER: wordpress
            MYSQL_PASSWORD: wordpress

    wordpress:
        depends_on:
            - db
        image: wordpress:latest
        ports:
            - '8000:80'
        restart: always
        volumes:
            - ./wp-content:/var/www/html/wp-content/
            - ./themes:/var/www/html/wp-content/themes/
            - ./plugins:/var/www/html/wp-content/plugins/
        environment:
            WORDPRESS_DB_HOST: db:3306
            WORDPRESS_DB_USER: wordpress
            WORDPRESS_DB_PASSWORD: wordpress
            WORDPRESS_DB_NAME: wordpress
volumes:
    wp-data:
    wp-content:
    themes:
    plugins:

可湿性粉剂数据和w-内容创建正常 但是嵌套的主题和插件不是

我错过了什么


您误用了卷。在您的
docker compose.yml
中,为每个服务创建
bind mounts
——这意味着您将主机的特定目录装载到容器中

同时,您正在声明一个节
,其中显式声明具有相同名称的卷,但它们从未被使用,并且创建为空目录

如果要创建和使用,则需要按照以下方式重写
docker compose.yml

services:
    ...
    db:
        ...
        volumes:
            - wp-data:/var/lib/mysql
        ...
    wordpress:
        volumes:
            - wp-content:/var/www/html/wp-content/
            - themes:/var/www/html/wp-content/themes/
            - plugins:/var/www/html/wp-content/plugins/
volumes:
    wp-data:
    wp-content:
    themes:
    plugins:
这将启用卷,但您仍然需要一种方法将来自主机的数据放入其中(例如
docker cp


另一方面,你们中的打算使用绑定挂载,您需要完全删除结尾
卷:
部分以避免混淆。

主题和插件是wp内容文件夹中的内容,因此使用单独的卷的背后是什么用例?因为我只对控制主题和插件文件夹的版本感兴趣,我是WordPress开发生态系统的新手:)你能给我解释一下容器卷和顶级卷之间的区别吗?我试图在docker compose文档中找到这些信息,但是或者我没有找到,或者没有很好地解释。没有“容器卷”。卷可以是外部的(由
docker volume create
显式创建),也可以隐式自动创建,但
docker compose
。第二个选项非常适合只需要在容器中的服务之间交换数据的情况;而在会话之间持久化数据最好使用外部卷。