【发布时间】:2019-07-24 02:36:51
【问题描述】:
Docker 新手警报。希望这不是一个愚蠢的问题,但我似乎无法弄清楚发生了什么。我正在尝试创建一个 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
谁能告诉我我在这里做错了什么?谢谢。
【问题讨论】:
-
您向全世界开放了 3306 端口,而不仅仅是向您的其他 Docker 容器开放。这可能不是你想要的。
-
如何打开 3306 到我的 web docker 容器?这是唯一需要直接访问数据库的东西
-
要打开 3306 到您的 Web 应用程序,您基本上什么都不做 - 从您的数据库服务定义中删除
ports: 3306:3306部分。由于这两个容器共享同一个网络,因此它们已经相互公开了端口。 -
说得对,谢谢
标签: mysql go docker-compose