首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker gogs连接被mysql容器拒绝

Docker gogs连接被mysql容器拒绝
EN

Stack Overflow用户
提问于 2018-02-08 00:31:47
回答 2查看 1.9K关注 0票数 0

我在设置本地git存储库时遇到了一些问题。我刚接触docker,所以这个问题可能很幼稚,但我仍然找不到它。

所以我的想法是:我想创建一个带有gogs (gogs/gogs image)的容器,并将其连接到mysql容器。

为此,我创建了docker-compose.yml文件。

代码语言:javascript
复制
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安装页面并尝试创建一个新的存储库时,它会显示tcp连接已被拒绝。以下是错误消息的输出:

代码语言:javascript
复制
dial tcp 127.0.0.1:10023: getsockopt: connection refused

这很奇怪,因为我可以通过phpmyadmin访问mysql容器。我还可以创建gogs数据库。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-08 01:09:28

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

dial tcp db:10023

docker-compose networking

票数 1
EN

Stack Overflow用户

发布于 2018-02-08 17:29:32

非常感谢gogsdoc_db_1,他/她的回答非常完美。我会试着解释我做错了什么,所以也许这会对像我这样的docker新人有所帮助。

就像蓝芯说的那样。你不应该在你的docker容器中使用localhost或127.0.0.1。

为什么不行?

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

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

所以我现在的配置是

附注:在安装gogs之前,不要忘记创建数据库

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48668793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档