【问题标题】:How can i access a database from docker?如何从 docker 访问数据库?
【发布时间】:2020-10-05 02:14:27
【问题描述】:

我需要访问我在 docker 之外创建的 MySQL 数据库,但出现错误如何访问我的数据库?

panic: failed to connect database
goroutine 1 [running]:
main.init.0()
    /go/src/app/src/main.go:33 +0x12c 

【问题讨论】:

  • 我没有数据库容器
  • 数据库连接已配置 somewhere - 您需要确保将该信息传递到您的 docker 容器中 - 并且从您的 docker 内部可以看到数据库所在的网络环境。

标签: mysql docker go go-gorm


【解决方案1】:

我不确定当前推荐的方法是什么,但这是过去在不同操作系统上对我有用的方法:

OSX:将mysql主机设置为docker.for.mac.localhost

Windows:将 mysql 主机设置为 host.docker.internal(这也适用于 OSX)

Linux:将 mysql 主机设置为 172.17.0.1

根据你安装 mysql 的方式,你可能需要找到它的my.cnf 配置并将bind_address 的值更改为0.0.0.0

【讨论】:

  • 谢谢你的回答,我试试看。
【解决方案2】:

一种方法是,获取数据库的 mysql 转储并将该文件复制到主机路径为 $HOME/docker/volumes/mysql 的目录中,并使用 --volume 标志将其映射到 docker 容器。

  1. 通过执行以下命令获取数据库的转储:mysqldump -u root -proot dnName > dbName.dat.sql(将 dbName 替换为您的数据库名称)。
  2. 在执行 docker tun 命令时,创建一个 Mysql docker 容器并使用卷标志将文件从主机映射到容器:-v $HOME/docker/volumes/mysql:/var/lib/mysql
  3. 将该 dumo 导入到容器的 mysql 中。 mysql -u root -proot dbName < dbName.dat.sql

【讨论】:

    猜你喜欢
    • 2021-01-04
    • 2018-04-06
    • 2016-12-23
    • 2017-11-30
    • 2020-12-07
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    相关资源
    最近更新 更多