当前位置: > > > > 无法连接到我的 mac 上运行的 mysql
来源:stackoverflow
2024-04-22 19:45:47
0浏览
收藏
今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《无法连接到我的 mac 上运行的 mysql》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!
问题内容
我正在使用 golang app ,包装在 docker 容器中来连接到在我的本地主机(不是容器)上运行的 mysql 数据库。她是我尝试过的: docker 文件
from artifactory.cloud.com//golang:1.10-alpine3.7 run mkdir -p /go/src/github.kdc.mafsafdfsacys.com/perfgo/ workdir /go/src/github.kdc.mafsafdfsacys.com/perfgo copy ./ $workdir run apk update && apk upgrade run go build run chmod +x ./entrypoint.sh run ls run chmod +x ./perfgo entrypoint ["./entrypoint.sh"]
perfgo.go
package main import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.open("mysql", "root:@tcp(localhost:3306)/testdb") checkerr(err) _,dberr := db.exec("use testdb") if err != nil { panic(dberr) } // insert _, inerr := db.query("insert into books values('rewyrewryewwrewyt','dsfdsfs','fdsfasaf','55')") defer db.close() // if there is an error inserting, handle it if inerr != nil { panic(inerr.error()) } } func checkerr(err error) { if err != nil { panic(err) } }
入口点.sh
!/usr/bin/env bash
./perfgo
用于构建的命令是
docker build .
用于运行容器的命令: docker run -p 3306:3306 -ti
我看到的错误是
panic: dial tcp 127.0.0.1:3306: connect: connection refused goroutine 1 [running]: main.main() /go/src/github.kdc.capitalone.com/midnight-tokens/perfGo/perf.go:22 +0x1d4
如果我在没有容器的情况下运行二进制文件,它在我的 mac 上运行完全正常,但是当我尝试将它作为 docker 容器的一部分运行时,它无法连接
解决方案
如果应用程序运行在容器中,而数据库位于主机上,那么从容器中获取数据库的地址显然不是localhost
(即容器的环回设备)。
如果您使用 Docker For Mac,那么您可以使用:
“docker.for.mac.localhost:3306”
代替 “localhost:3306”
以上就是《无法连接到我的 mac 上运行的 mysql》的详细内容,更多关于的资料请关注公众号!