gpt4 book ai didi

mysql - 无法连接到我的 mac 上运行的 mysql

转载 作者:IT王子 更新时间:2023-10-29 02:09:32 25 4
gpt4 key购买 nike

我正在使用 golang 应用程序,封装在一个 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 庆典

./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(即容器的loopback设备) .

如果您使用的是 Docker For Mac,那么您可以使用:

“docker.for.mac.localhost:3306” 代替 “localhost:3306”

关于mysql - 无法连接到我的 mac 上运行的 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51411724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com