Docker 新手警报。希望这不是一个愚蠢的问题,但我似乎无法弄清楚发生了什么。我正在尝试创建一个 docker-compose 文件,该文件创建一个带有已安装卷的 mysql 数据库和一个连接到 mysql 数据库的 go webserver 应用程序。这是我的 docker-compose 文件:services: db: image: mysql:8.0.2 environment: MYSQL_ROOT_PASSWORD: test MYSQL_DATABASE: northernairport ports: - "3306:3306" volumes: - /data:/var/lib/mysql web: depends_on: - db build: . ports: - "8080:8080"虽然我的 go 应用程序似乎无法连接到我的 mysql 数据库,但我认为“depends_on”将确保这是可能的。我得到的错误:panic: dial tcp 127.0.0.1:3306: getsockopt: connection refused谁能告诉我我在这里做错了什么?谢谢。
2 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
onlydepends_on
控制服务的构建和启动顺序。
您的实际问题更有可能是您使用了从 Web 应用程序到数据库的错误地址。我看到您没有定义任何网络,因此您正在使用default
为您的应用程序创建的网络docker-compose
。这将在默认网络的 DNS 上按名称发布每个服务。
因此,您的 Web 应用程序可能应该用作db:3306
数据库地址,而不是localhost:3306
错误127.0.0.1:3306
消息中指示的地址。
一只斗牛犬
TA贡献1784条经验 获得超2个赞
该ports
部分用于以下列格式将容器端口与主机映射ports (HOST:CONTAINER)
。这意味着您正在尝试访问主机的机器,而是配置web
要连接的应用程序db:3306
。
- 2 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消