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

Go+MySQL开发的CRUD RESTful API Docker化部署报错求解

问题排查与修复方案

1. MySQL容器启动失败修复

错误原因:MySQL官方镜像规则限制,MYSQL_USER、MYSQL_PASSWORD两个环境变量仅用于创建普通权限账号,不能将MYSQL_USER设置为root,root账号的密码仅通过MYSQL_ROOT_PASSWORD参数控制。

修复方案二选一:

  • 方案1:修改项目根目录下的.env文件,将DB_USER参数值改为非root的普通用户名(例如webapi_user),MySQL启动时会自动创建该用户并授予配置的数据库权限
  • 方案2:如果确定要使用root账号连接数据库,直接删除docker-compose.yaml中webapi-mysql服务下的MYSQL_USER、MYSQL_PASSWORD两行环境变量配置即可

2. Web API数据库连接失败修复

错误原因:当前Web API的数据库连接配置中地址填写为127.0.0.1:3306,Docker容器内的127.0.0.1指向容器自身,无法解析到同网络下的MySQL容器。

修复方案:
修改Web API的数据库连接配置(通常为.env文件或项目配置文件):

  • 数据库地址(对应配置项DB_HOST)改为MySQL服务名webapi-mysql(或MySQL容器名db_mysql,同Docker网络下两个名称均可正常解析)
  • 数据库端口改为MySQL容器内部端口3306,容器间通信不需要使用宿主机映射的3308端口

可选优化(避免偶发连接失败)

depends_on配置仅控制容器启动顺序,不会等待MySQL完全初始化就绪后再启动Web API,建议补充健康检查配置,避免偶发的连接拒绝问题,修改后的核心配置示例如下:

services:
  app:
    # 原有配置保持不变
    depends_on:
      webapi-mysql:
        condition: service_healthy          

  webapi-mysql:
    # 原有配置保持不变
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "-u${DB_USER}", "-p${DB_PASSWORD}"]
      timeout: 5s
      retries: 10

内容的提问来源于stack exchange,提问作者Saan Classes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:24:03