0

我在设置本地 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 数据库。

以前有人遇到过这个问题吗?

4

2 回答 2

1

不要在容器内使用 localhost 或 127.0.0.1,使用 docker-compose 中定义的服务名称。

dial tcp db:10023

码头工人组成网络

于 2018-02-07T17:09:28.363 回答
0

非常感谢 gogsdoc_db_1。他/她的回答是完美的。我将尝试解释我做错了什么,所以也许这将有助于像我这样的 docker 新条目。

正如bluescores,已经说过。您不应该在 docker 容器中使用 localhost 或 127.0.0.1 。

为什么不?

基本上,当您使用 docker-compose 时,它​​会自动为您的应用程序创建共享网络,这意味着您不应该使用已发布的端口。在可能的情况下,我必须使用端口 3306 而不是 10023 来连接到我的数据库容器。

如果我想从本地机器连接到 mysql,我仍然应该使用端口 10023。

所以我现在的配置是

在此处输入图像描述 在此处输入图像描述

PS在安装gogs之前不要忘记创建数据库

于 2018-02-08T09:29:32.420 回答