Mac环境下wp-env启动时Docker数据库连接失败求助
问题:wp-env启动时数据库连接失败(Mac 14.2.1 + Docker 4.27.2)
使用Mac 14.2.1系统与Docker 4.27.2,执行npm run wp-env start时,容器已创建并运行,但出现数据库连接错误。已重装Docker、NVM及Node,问题仍未解决。
命令执行输出
➜ TEST npm run wp-env start > @ wp-env /Users/ciaran/Projects/TEST > wp-env "start" ⚠ Warning: could not find a .wp-env.json configuration file and could not determine if '/Users/ciaran/Projects/TEST' is a WordPress installation, a plugin, or a theme. ✖ Error while running docker compose command. Container 31ccb2fb25f5a8b628d4a487d8d7a7d7-tests-mysql-1 Running Container 31ccb2fb25f5a8b628d4a487d8d7a7d7-tests-wordpress-1 Running Error: Error establishing a database connection. This either means that the username and password information in your `wp-config.php` file is incorrect or that contact with the database server at `tests-mysql` could not be established. This could mean your host’s database server is down. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! @ wp-env: `wp-env "start"` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the @ wp-env script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm WARN Local package.json exists, but node_modules missing, did you mean to install? npm ERR! A complete log of this run can be found in: npm ERR! /Users/ciaran/.npm/_logs/2024-02-21T16_45_59_997Z-debug.log
npm运行日志
0 info it worked if it ends with ok 1 verbose cli [ 1 verbose cli '/Users/ciaran/.nvm/versions/node/v14.21.3/bin/node', 1 verbose cli '/Users/ciaran/.nvm/versions/node/v14.21.3/bin/npm', 1 verbose cli 'run', 1 verbose cli 'wp-env', 1 verbose cli 'start' 1 verbose cli ] 2 info using npm@6.14.18 3 info using node@v14.21.3 4 verbose run-script [ 'prewp-env', 'wp-env', 'postwp-env' ] 5 info lifecycle @~prewp-env: @ 6 info lifecycle @~wp-env: @ 7 verbose lifecycle @~wp-env: unsafe-perm in lifecycle true 8 verbose lifecycle @~wp-env: PATH: /Users/ciaran/.nvm/versions/node/v14.21.3/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/ciaran/Projects/TEST/node_modules/.bin:/Users/ciaran/.nvm/versions/node/v14.21.3/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Users/ciaran/.nvm/versions/node/v14.21.3/bin:/opt/homebrew/bin:/opt/homebrew/sbin 9 verbose lifecycle @~wp-env: CWD: /Users/ciaran/Projects/TEST 10 silly lifecycle @~wp-env: Args: [ '-c', 'wp-env "start"' ] 11 silly lifecycle @~wp-env: Returned: code: 1 signal: null 12 info lifecycle @~wp-env: Failed to exec wp-env script 13 verbose stack Error: @ wp-env: `wp-env "start"` 13 verbose stack Exit status 1 13 verbose stack at EventEmitter.<anonymous> (/Users/ciaran/.nvm/versions/node/v14.21.3/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16) 13 verbose stack at EventEmitter.emit (events.js:400:28) 13 verbose stack at ChildProcess.<anonymous> (/Users/ciaran/.nvm/versions/node/v14.21.3/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14) 13 verbose stack at ChildProcess.emit (events.js:400:28) 13 verbose stack at maybeClose (internal/child_process.js:1088:16) 13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:296:5) 14 verbose pkgid @ 15 verbose cwd /Users/ciaran/Projects/TEST 16 verbose Darwin 23.2.0 17 verbose argv "/Users/ciaran/.nvm/versions/node/v14.21.3/bin/node" "/Users/ciaran/.nvm/versions/node/v14.21.3/bin/npm" "run" "wp-env" "start" 18 verbose node v14.21.3 19 verbose npm v6.14.18 20 error code ELIFECYCLE 21 error errno 1 22 error @ wp-env: `wp-env "start"` 22 error Exit status 1 23 error Failed at the @ wp-env script. 23 error This is probably not a problem with npm. There is likely additional logging output above. 24 verbose exit [ 1, true ]
解决建议
- 安装本地依赖:执行
npm install解决node_modules missing的警告,wp-env需要依赖包支持才能正常运行。 - 添加
.wp-env.json配置文件:在项目根目录创建该文件,明确项目类型与数据库配置,示例内容:
{ "core": "WordPress/WordPress", "plugins": [ "." ], "env": { "tests": { "config": { "DB_HOST": "tests-mysql", "DB_NAME": "wordpress_test", "DB_USER": "root", "DB_PASSWORD": "password" } } } }
- 验证容器网络一致性:执行以下命令检查MySQL和WordPress容器是否在同一网络:
docker inspect 31ccb2fb25f5a8b628d4a487d8d7a7d7-tests-mysql-1 | grep Networks docker inspect 31ccb2fb25f5a8b628d4a487d8d7a7d7-tests-wordpress-1 | grep Networks
- 手动重启WordPress容器:MySQL可能未完全就绪就被连接,执行
docker restart 31ccb2fb25f5a8b628d4a487d8d7a7d7-tests-wordpress-1尝试重新连接。 - 升级Node版本:wp-env对Node版本有要求,当前Node 14.21.3可能存在兼容性问题,切换到Node 16+ LTS版本:
nvm install 16 && nvm use 16 npm install npm run wp-env start
内容的提问来源于stack exchange,提问作者hellsdels
相关产品推荐
相关产品推荐

