登录
首页 >  Golang >  Go问答

在 Docker 中连接到外部 MySQL 数据库

来源:stackoverflow

时间:2024-04-14 09:24:36 308浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《在 Docker 中连接到外部 MySQL 数据库》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我使用 golang 创建了一个 rest api,它连接到本地安装的 mysql workbench 上的 mysql 数据库,现在我希望将此 api dockerise,但如何在 docker-compose 中连接到外部数据库? 我是 docker 新手,所以对事情了解甚少。

func dbConnection() (db *sql.DB) {
    db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/testDB")
    if err != nil {
        panic(err)
    }
    return db
}

正确答案


您必须将 localhost 更改为 docker.host,正如我在此处解释的 https://stackoverflow.com/a/61001152/418599

换句话说,您应该编写一个 docker 构建脚本,通过以下方式设置环境变量:

ip_address=$(ip addr show | grep "\binet\b.*\bdocker0\b" | awk '{print $2}' | cut -d '/' -f 1)

然后使用docker-compse来构建传递上述ip地址的镜像,如下所示:

extra_hosts:
  docker.host: ${IP_ADDRESS}

最后在 go 源中使用 ip_address 环境变量来代替 localhost

终于介绍完啦!小伙伴们,这篇关于《在 Docker 中连接到外部 MySQL 数据库》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>