首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gogs +无人驾驶飞机获得getsockopt:连接被拒绝

Gogs +无人驾驶飞机获得getsockopt:连接被拒绝
EN

Stack Overflow用户
提问于 2016-08-12 06:53:57
回答 1查看 1.8K关注 0票数 2

在Gogs/webhooks界面中,当我单击测试交付按钮时,我得到了这个错误;

发送: Post token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZXh0IjoidG9tL2Ryb255IiwidHlwZSI6Imhvb2sifQ.UZdOVW2IdiDcLQzKcnlmlAxkuA8GTZBH634G0K7rggI:拨号tcp :1:8000: getsockopt:连接被拒绝

这是我的docker-复合. file文件

代码语言:javascript
复制
version: '2'
services:
  gogs:
    image: gogs/gogs
    ports:
      - 3000:3000
      - 22:22
    links:
      - mysql

  mysql:
    image: mysql
    expose:
      - 3306
    environment:
      - MYSQL_ROOT_PASSWORD=1234
      - MYSQL_DATABASE=gogs

  drone:
    image: drone/drone
    links:
     - gogs
    ports:
      - 8000:8000
    volumes:
      - ./drone:/var/lib/drone 
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - REMOTE_DRIVER=gogs
      - REMOTE_CONFIG=http://gogs:3000?open=true
      # - PUBLIC_MODE=true
EN

回答 1

Stack Overflow用户

发布于 2016-08-21 00:35:01

根本原因是无人机假定它的外部地址是localhost:8000,因为这就是从浏览器访问它的方式。因此,无人驾驶飞机将所有Gogs网络钩子配置为使用localhost:8000/hook作为回调URL。

这里的问题是,Gogs和无人驾驶飞机在不同的网络上运行在单独的容器中。这意味着,当Gogs试图将钩子发送给无人机时,它会将其发送给localhost:8000,但由于无人驾驶飞机在另一座桥上,所以失败了。

推荐的Fix

推荐的解决方法是使用DNS或IP地址与无人机和Gogs一起使用。如果您正在运行任何一个系统的生产安装,则不太可能使用localhost,因此这似乎是合理的解决方案。

对于本地测试,还可以使用Docker分配的本地IP地址。您可以使用Docker检查找到您的无人机和Gogs IP地址:

代码语言:javascript
复制
"Networks": {
  "default": {
    "IPAddress": "172.18.0.3"
  }
}

为什么不自定义主机名?

使用自定义主机名(如http://gogs )是有问题的,因为无人机使用默认的Docker网络设置为每次构建创建临时Docker容器。这意味着您的构建环境将使用它自己的孤立网络,并且无法解析http://gogs

因此,即使我们配置了无人机和Gogs来使用自定义主机名进行通信,构建环境也无法解析Gogs主机名来克隆您的存储库。

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

https://stackoverflow.com/questions/38911678

复制
相关文章

相似问题

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