Docker环境下无法执行drush cim命令的问题求助
问题解答
一、Docker环境下执行drush cim的方法
你的Docker栈中,drush工具集成在php容器里(使用的wodby/drupal-php镜像自带Drush),执行命令有两种方式:
方式1:直接在宿主机执行容器命令
在项目根目录(docker-compose.yml所在目录)运行:
# 直接执行配置导入命令,指定Drupal根目录为/web docker-compose exec php drush -r /var/www/html/web cim
如果需要先确认Drush可用,可先测试:
docker-compose exec php drush -r /var/www/html/web status
方式2:进入php容器后执行命令
先进入容器的交互式终端:
docker-compose exec php bash
进入后切换到Drupal根目录,再执行命令:
cd /var/www/html/web drush cim
二、localhost:8000访问异常的排查方向
按以下步骤逐一排查:
1. 检查容器运行状态
先确认所有服务是否正常启动:
docker-compose ps
如果有服务状态不是Up,查看对应服务的日志定位问题:
# 查看nginx日志 docker-compose logs nginx # 查看php日志 docker-compose logs php # 查看数据库日志 docker-compose logs mariadb
2. 验证Drupal代码目录结构
你的nginx配置中NGINX_SERVER_ROOT设为/var/www/html/web,意味着容器内的/var/www/html/web必须是Drupal的核心根目录(包含index.php、modules、themes等文件夹)。检查本地项目根目录下是否存在web文件夹,且里面有完整的Drupal代码。
3. 确认数据库连接配置
Drupal的settings.php文件中,数据库配置需要和docker-compose.yml中的环境变量匹配:
- 数据库主机:
mariadb(容器间通过服务名通信,不能用localhost) - 数据库名:对应
DB_NAME变量值 - 用户名:对应
DB_USER变量值 - 密码:对应
DB_PASSWORD变量值
4. 检查文件权限
wodby镜像对文件权限有要求,容器内的/var/www/html/web目录需要正确的读写权限。进入php容器执行权限修复:
docker-compose exec php chown -R www-data:www-data /var/www/html/web
5. 检查PHP依赖与扩展
如果Drupal代码依赖特定PHP扩展,确认wodby/drupal-php镜像是否包含所需扩展,或者查看php日志中的相关报错信息。
内容的提问来源于stack exchange,提问作者Bohdan V.
相关产品推荐
相关产品推荐

