You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:01:11