我正在尝试构建基于docker的WordPress开发环境,并且希望能够拥有这样的文件夹结构:
.
|
--wp-data
|
--wp-content
|
--plugins
|
--themes
插件和主题也在wp-content内
这是我的docker-compose文件:
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:
wp数据和w内容创建成功 但是嵌套的主题和插件无法使用
我还缺少什么?
致谢
答案 0 :(得分:1)
您正在滥用卷。在docker-compose.yml
中,为每个服务创建bind mounts
-这意味着您将主机的特定目录装入容器中。
同时,您要声明volumes
部分,其中显式声明具有相同名称的卷,但它们从未使用,并创建为空目录。
要创建和使用卷,需要以以下方式重写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
)。
另一方面,您打算使用绑定安装,您需要完全删除结尾的volumes:
部分,以免引起混淆。