mysql - Docker-Compose 服务不通信
问题描述
码头工人新手警报。希望这不是一个愚蠢的问题,但我似乎无法弄清楚发生了什么。我正在尝试创建一个 docker-compose 文件,该文件创建一个带有已安装卷的 mysql db 和一个连接到 mysql db 的 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
谁能告诉我我在这里做错了什么?谢谢。
解决方案
唯一控制服务的depends_on
构建和启动顺序。
您的实际问题更有可能是您使用了从 Web 应用程序到数据库的错误地址。我看到您没有定义任何网络,因此您使用的default
是为您的应用程序创建的网络docker-compose
。这将在默认网络的 DNS 上按名称发布每个服务。
因此,您的 Web 应用程序可能应该db:3306
用作数据库地址,而不是localhost:3306
或127.0.0.1:3306
如错误消息中所示。
推荐阅读
- redux-saga - 在 redux-saga 中使用事件句柄显示/隐藏组件
- swift - 如何在一个视图控制器中使用多个 UIPickerViews
- html - 如何将输入字段键入为筹码
- r - 如何计算r中的列百分比
- elasticsearch - 为什么我没有从我的复合聚合查询中收到 after_key?
- html - 在 Bootstrap 中,为什么我的文本顶部不与相邻元素对齐?
- angular - 子路由是否需要默认组件
- php - 无法在php中输出最后一个自动生成的ID
- python - 当 boto3 client.put_object() 不成功时会发生什么?
- r - 如何在保留所有列的同时按 ID 分组并使用 dplyr 对它们的存在进行二分法?