如何在docker compose中在wordpress和wp cli之间共享卷
在尝试为WordPress主题开发设置一个可重用的、半自动的docker-compose.yml文件时,我在StackOverflow上找到并实现了vstm提供的docker-compose.yml 这个示例运行得非常好,我一直在使用它添加wpcli命令,用于添加插件、更改选项和删除预加载的主题和插件 但是现在,除了权限错误之外,我什么也没有得到,我已经尝试手动将wp-cli更改为如何在docker compose中在wordpress和wp cli之间共享卷,wordpress,docker,docker-compose,wp-cli,Wordpress,Docker,Docker Compose,Wp Cli,在尝试为WordPress主题开发设置一个可重用的、半自动的docker-compose.yml文件时,我在StackOverflow上找到并实现了vstm提供的docker-compose.yml 这个示例运行得非常好,我一直在使用它添加wpcli命令,用于添加插件、更改选项和删除预加载的主题和插件 但是现在,除了权限错误之外,我什么也没有得到,我已经尝试手动将wp-cli更改为user:'33:33'以及原始的user:xfs 我从这个例子开始,遇到的第一个问题是为我正在开发的主题添加一个额
user:'33:33'
以及原始的user:xfs
我从这个例子开始,遇到的第一个问题是为我正在开发的主题添加一个额外的共享卷。我的主题名是默认值
,因此卷名是正确的
以下是我目前掌握的情况:
version: "2.3"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- 8000:80
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_TABLE_PREFIX: "wp_"
WORDPRESS_DEBUG: 1
# vstm: add shared volume
volumes:
- wp_data:/var/www/html
- ./default/:/var/www/html/wp-content/themes/default
wordpress-cli:
depends_on:
- db
- wordpress
image: wordpress:cli
# vstm: This is required to run wordpress-cli with the same
# user-id as wordpress. This way there are no permission problems
# when running the cli
user: xfs
# vstm: The sleep 10 is required so that the command is run after
# mysql is initialized. Depending on your machine this might take
# longer or it can go faster.
command: >
/bin/bash -c '
sleep 10;
wp core install --path="/var/www/html" --url="http://localhost:8000" --title="Local Wordpress By Docker" --admin_user=admin --admin_password=secret --admin_email=foo@bar.com;
wp plugin install classic-editor;
'
# vstm: add shared volume
volumes:
- wp_data:/var/www/html
- ./default/:/var/www/html/wp-content/themes/default
volumes:
db_data:
# vstm: add shared volume
wp_data:
以下是kitematic中wp cli控制台的输出日志:
Warning: Unable to create directory wp-content/uploads/2019/01. Is its parent directory writable by the server?
Success: WordPress installed successfully.
Installing Classic Editor (1.3)
Warning: Failed to create directory '/etc/X11/fs/.wp-cli/cache/': mkdir(): Permission denied.
Downloading installation package from https://downloads.wordpress.org/plugin/classic-editor.1.3.zip...
Unpacking the package...
Warning: Could not create directory.
Error: No plugins installed.
在至少5个站点上,一切都运行得很好,然后我假设docker最近发生了变化,我更新并破坏了所有站点。有什么想法可以在最新的Docker中解决吗?可能与
/default/:/var/www/html/wp content/themes/default
字符串有关。你能将linew替换为/default/:/var/www/html/wp content
并尝试一下吗?@vvchik我认为这会将“default”主题放在容器中的错误位置,但我尝试过,没有任何运气。我仍然收到各种各样的权限错误。这很奇怪,因为我的同事使用的是同一个docker compose文件,它工作得非常完美。是什么原因造成的!?我已经试着运行你的撰写,它与我的修改工作。您需要从主机访问默认文件夹吗?如果没有,请尝试使其共享卷与wp_数据相似。如果是,请尝试删除/重命名当前文件夹中的数据文件夹。@vvchik,我确实需要访问默认文件夹,因为我正在进行主题开发。如果我没有为它装载卷,容器就看不到我的主题。在您的实例中,您是否尝试安装插件或更新wordpress?这就是我得到新错误的地方。非常感谢你的努力。@vvchik我想我可能已经解决了。这似乎是WP-CLI新版本中引入的一项更改。我恢复到wordpress:cli-1
,现在我所有的命令和安装都工作正常。我想知道在新的WP CLI中用户发生了什么变化。。。