Docker gogs 连接被 mysql 容器拒绝
Docker gogs connection is refused by mysql container
我在设置本地 git 存储库时遇到了一些问题。我是 docker 的新手,所以这个问题可能很幼稚,但我仍然找不到它。
所以我的想法是:
我想用 gogs(gogs/gogs 图片)创建一个容器并将其连接到 mysql 容器。
为此,我创建了 docker-compose.yml 文件。
version: '3'
services:
db:
image: mysql
ports:
- "10023:3306"
environment:
- MYSQL_ROOT_PASSWORD=root!
ui:
image: phpmyadmin/phpmyadmin
ports:
- "8989:80"
links:
- db:mysql
repo:
image: gogs/gogs
ports:
- "10022:22"
- "10080:3000"
volumes:
- /tmp/gogs:/data gogs/gogs
links:
- db:mysql
我都将 phpmyadmin 放在我的设置中,这样我可以轻松测试 mysql 是否已启动并响应其他容器。
遗憾的是,这个环境不起作用,当进入 localhost:10080 上的 gogs 安装页面并尝试创建一个新的 repo 时,它说 tcp 连接已被拒绝。这是错误消息的输出:
dial tcp 127.0.0.1:10023: getsockopt: connection refused
这很奇怪,因为我可以通过 phpmyadmin 访问 mysql 容器。我还能够创建 gogs 数据库。
以前有人遇到过这个问题吗?
不要在容器内使用 localhost 或 127.0.0.1,使用 docker-compose 中定义的服务名称。
dial tcp db:10023
非常感谢gogsdoc_db_1。 His/her 回答完美。我将尝试解释我做错了什么,所以也许这会对 docker 中的新条目有所帮助,例如我自己。
正如bluescores所说。您不应在 docker 容器内使用 localhost 或 127.0.0.1。
为什么不呢?
基本上,当您使用 docker-compose 时,它会自动为您的应用创建共享网络,这意味着您不应使用已发布的端口。
在可能的情况下,我必须使用端口 3306 而不是 10023 来连接到我的数据库容器。
如果我想从我的本地机器连接到 mysql,我仍然应该使用端口 10023。
所以我现在的配置是
P.S。
在安装 gogs
之前,不要忘记创建数据库
我在设置本地 git 存储库时遇到了一些问题。我是 docker 的新手,所以这个问题可能很幼稚,但我仍然找不到它。
所以我的想法是: 我想用 gogs(gogs/gogs 图片)创建一个容器并将其连接到 mysql 容器。
为此,我创建了 docker-compose.yml 文件。
version: '3'
services:
db:
image: mysql
ports:
- "10023:3306"
environment:
- MYSQL_ROOT_PASSWORD=root!
ui:
image: phpmyadmin/phpmyadmin
ports:
- "8989:80"
links:
- db:mysql
repo:
image: gogs/gogs
ports:
- "10022:22"
- "10080:3000"
volumes:
- /tmp/gogs:/data gogs/gogs
links:
- db:mysql
我都将 phpmyadmin 放在我的设置中,这样我可以轻松测试 mysql 是否已启动并响应其他容器。
遗憾的是,这个环境不起作用,当进入 localhost:10080 上的 gogs 安装页面并尝试创建一个新的 repo 时,它说 tcp 连接已被拒绝。这是错误消息的输出:
dial tcp 127.0.0.1:10023: getsockopt: connection refused
这很奇怪,因为我可以通过 phpmyadmin 访问 mysql 容器。我还能够创建 gogs 数据库。
以前有人遇到过这个问题吗?
不要在容器内使用 localhost 或 127.0.0.1,使用 docker-compose 中定义的服务名称。
dial tcp db:10023
非常感谢gogsdoc_db_1。 His/her 回答完美。我将尝试解释我做错了什么,所以也许这会对 docker 中的新条目有所帮助,例如我自己。
正如bluescores所说。您不应在 docker 容器内使用 localhost 或 127.0.0.1。
为什么不呢?
基本上,当您使用 docker-compose 时,它会自动为您的应用创建共享网络,这意味着您不应使用已发布的端口。 在可能的情况下,我必须使用端口 3306 而不是 10023 来连接到我的数据库容器。
如果我想从我的本地机器连接到 mysql,我仍然应该使用端口 10023。
所以我现在的配置是
P.S。 在安装 gogs
之前,不要忘记创建数据库