问题引出

当我们将写好的web项目部署到Docker上之后,却发现无法成功运行,但是在本地测试的时候明明可以成功运行,这是为什么呢?

原来是我的服务器主机地址在开发时直接设置为localhost,在本地运行的时候可以直接通过他来找到数据库地址,但是在Docker里面不能够直接通过识别它来访问到我们的主机数据库,因此就出现了报错。

例如,你的数据库配置文件可能如下图所示

[database]
Db = mysql
DbHost = localhost
DbPort = 3306
DbUser = root
DbPassword = 123456
DbName = new_ginblog

解决方案

在将项目部署到Docker上之前修改 DbHost 的值为 host.docker.internal ,因为这是Docker 提供的一个特殊 DNS 名称,用于在容器内部访问宿主机(运行 Docker 的主机) 的网络服务,无需手动指定宿主机的 IP 地址,简化了本地开发环境中的容器与宿主机通信。

修改后的配置信息

[database]
Db = mysql
DbHost = host.docker.internal
DbPort = 3306
DbUser = root
DbPassword = 123456
DbName = new_ginblog

在这样修改之后就可以在Docker上面正常的运行了。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐