Docker Compose启动WhatsApp API本地环境时MySQL未启动问题排查
问题原因及对应修复方案
- 数据库连接地址配置错误
你db.env中WA_DB_HOSTNAME配置为127.0.0.1,Docker容器内的127.0.0.1指向容器自身,而非同bridge网络下的MySQL服务容器。将该参数修改为docker-compose中MySQL的服务名db即可,Docker内置DNS会自动解析到对应容器的内网IP。 - docker-compose.yml存在严重缩进错误
YAML语法对缩进极为敏感,你提供的配置中,db服务下的ports、volumes、network_mode字段缩进层级错误,且wacore、waweb服务完全没有缩进在services字段下,会导致配置解析失败,MySQL容器根本不会按预期启动。需要修正缩进,所有服务相关配置都要缩进至services字段的子层级。 - MySQL首次初始化延迟导致的暂时无法连接
depends_on仅控制容器的启动顺序,不会等待MySQL内部初始化完成(首次启动需要创建默认库、配置权限,耗时通常在10~30秒)。你用到的启动脚本wait_on_mysql.sh本身就是用来处理该场景的,只要连接配置正确,等待片刻即可正常连接,无需额外修改。 - 历史卷残留数据导致密码不匹配
如果之前启动过MySQL容器且使用了同名的mysqlData持久化卷,旧卷中存储的root密码可能和当前配置的testpass不一致,导致连接被拒绝。可以执行docker volume rm <你的项目名>_mysqlData删除旧卷后重新启动服务。 - 冗余端口配置错误(次要问题)
你的db服务中expose字段写的是33060,但MySQL容器内部实际监听的是3306端口,该配置虽然不影响同网络下其他容器访问3306端口,但属于冗余错误配置,可以删除或修改为3306。
内容的提问来源于stack exchange,提问作者Exoriri
相关产品推荐
相关产品推荐

