【发布时间】:2019-02-04 03:24:37
【问题描述】:
我刚刚用新的(MACOS)替换了我的旧公司计算机,下载项目,现在我试图连接到 mysql docker 映像,但我总是得到 p>
拨号 tcp 127.0.0.1:3306:连接:连接被拒绝
在我的旧电脑上一切正常,但现在我遇到了这个问题。
我的 docker compose(未显示所有内容):
version: "3"
services:
mysql:
image: mysql:5.6
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
- ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: a
LANG: C.UTF-8
adminer:
image: adminer
ports:
- 8082:8080
nginx:
build: ../docker-shared/nginx
ports:
- 443:443
volumes:
- "./nginx_proxy_settings.conf:/etc/nginx/conf.d/nginx_proxy_settings.conf"
volumes:
mysql-data:
因此,如果我执行docker-compose up 一切正常,您可以查看管理员正在处理数据的下一张图片:
这是我连接mysql的Golang代码:
func main() {
dbConfig := mysql.NewConfig()
dbConfig.User = "root"
dbConfig.Passwd = "a"
dbConfig.Addr = "mysql"
dbConfig.DBName = "company_prod"
db, err := sql.Open("mysql", dbConfig.FormatDSN())
if err != nil {
panic(err)
}
defer db.Close()
}
你知道我做错了什么吗?
谢谢
【问题讨论】:
-
尝试添加
dbConfig.Net = "tcp"? -
地址也应该加上端口,所以应该是
mysql:3306而不是mysql -
首先感谢您的回复,我尝试了 dbConfig.net = "tcp",现在我得到了这个错误: dial tcp: lookup mysql: no such host, 添加端口到 mysql 不起作用: S
-
啊,刚刚意识到您的 go 应用不在您的撰写文件中。这意味着它将无法解析
mysql。如果您不希望您的 go 应用程序出现在 compose 文件中,则必须公开 mysql 容器的端口(通过添加ports: 3306:3306)并使用localhost:3306作为您的 go 应用程序中的地址。跨度> -
什么意思?你试过我的建议了吗?
标签: mysql docker go docker-compose