Wordpress 共享同一父级的Docker卷?
我正在尝试构建一个基于docker的WordPress开发环境,我希望能够拥有如下文件夹结构: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
.
|
--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
。第二个选项非常适合只需要在容器中的服务之间交换数据的情况;而在会话之间持久化数据最好使用外部卷。