我正在尝试从我的本地Go文件连接在Docker上创建的mysqlDB。
主服务器。开始
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
fmt.Println("Hello")
// All following 4 codes won't connect to the database.
// "db01" is docker container name. "test" is db name.
// db, err := sql.Open("mysql", "root:password@tcp(localhost:3306)/test")
// db, err := sql.Open("mysql", "root:password@tcp(localhost)/test")
// db, err := sql.Open("mysql", "root:password@tcp(db01)/test")
db, err := sql.Open("mysql", "root:password@tcp(db01:3306)/test")
if err != nil {
fmt.Println(err)
}
defer db.Close()
fmt.Println(db)
err = db.Ping()
if err != nil {
fmt.Println(err)
}
}
停靠命令
docker run --name db01 -dit -e MYSQL_ROOT_PASSWORD=password mysql:latest
错误消息
尝试使用本地主机时:3306
dial tcp [::1]:3306: connect: connection refused
尝试使用db 01时,
dial tcp: lookup db01: no such host
mysql数据库是在docker容器上创建的,没有任何问题,所以我认为go文件和docker容器之间的连接不太顺利。
我必须创建docker-compose.yml文件吗?我现在不想连接它。
谢谢你。
1条答案
按热度按时间14ifxucb1#
您创建了一个Docker容器并在其中运行MySQL。该容器将拥有自己的网络地址。您可以通过运行以下命令在本地主机上发布该容器的端口:
这将在localhost:3306上发布容器的端口3306,然后您可以连接到它。
或者,您可以使用
docker inspect <containerId>
获取正在运行的容器的IP地址,并连接到该地址:3306。