运行 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。
最佳答案
它必须为 docker 内部 IP 公开一个端口,但是每次重新启动时都可以更改 IP。要将端口映射到本地主机,您可以使用标志 -p 127.0.0.1:3306:3306
要为 docker 容器指定 IP,您可以创建自己的用户定义的虚拟网络并在启动容器时在此网络上绑定(bind) 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
指定的名称.
关于mysql - 使用 golang 连接到 docker mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60248943/