为了账号安全,请及时绑定邮箱和手机立即绑定

使用 golang 连接到 docker mysql

使用 golang 连接到 docker mysql

Go
泛舟湖上清波郎朗 2022-05-18 10:39:01
运行 docker mysqldocker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7[mysql docker运行容器][1]去代码:包主import ("database/sql"_ "github.com/go-sql-driver/mysql")func main() {db, err := sql.Open("mysql", "root:root@tcp(172.17.0.2:3306)/test-db")if err != nil {    panic(err)}defer db.Close()err = db.ping()if err != nil {   log.Print(err)}ping 正在抛出 ETIMEDOUT 。IP 正确的是容器 IP。
查看完整描述

3 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

它必须为 docker 内部 IP 公开一个端口,但是每次重新启动时都可以更改 IP。要将端口映射到本地主机,您可以使用标志-p 127.0.0.1:3306:3306


要为 docker 容器指定 IP,您可以创建自己的用户定义的虚拟网络并在启动容器时在此网络上绑定 IP。


docker network create --subnet=192.168.101.0/24 test

docker run -d --name db1 --network test --ip=192.168.101.10 -e MYSQL_ROOT_PASSWORD=12345 mysql:5.7

mysql -h 192.168.101.10 -uroot -p12345

另外,请确保 MySQL 已启动。您可以使用 检查状态docker ps并使用 记录docker logs db1。其中db1用标志指定的名称--name。


查看完整回答
反对 回复 2022-05-18
?
呼如林

TA贡献1798条经验 获得超3个赞

解决方案不是在 Docker MySQL 上工作,而是在基于 Linux 的 Docker 上工作,并使用 mysql + go on it。

创建了一个 Docker 镜像,它是 Ubuntu 18.04 + Mysql Server 5.7 + Golang 1.13 的组合。在Docker Hub上可用。

拉取图像并使用以下命令运行它:-

拉取镜像后,您可以使用以下命令启动 mysql 服务器 -

/etc/init.d/mysql 启动



查看完整回答
反对 回复 2022-05-18
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

您需要使用 docker-p端口公开 MySQL 端口,例如

docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 33060:3306 -d mysql:5.7

然后标准 MySQL 应用程序端口 3306 将在您的主机 IP 上映射到端口 33060。然后在您的 golang 应用程序配置中使用该 IP 和端口。

同样正如@Adrian 指出的那样,等待 MySql 容器完全启动。您可以通过 观看它的日志docker logs -f <CONTAINER_UD>。一旦您看到它在本地端口 3306 上进行侦听,您的应用程序应该能够连接。


查看完整回答
反对 回复 2022-05-18
  • 3 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号