git 无法连接到 github.com 端口 443:连接被拒绝,无法引导,Discourse Docker
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/24873340/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Failed to connect to github.com port 443: Connection refused, Failed to Bootstrap, Discourse Docker
提问by Jonathan
Whilst running my ./launcher bootstrap app
command from /var/docker
on a local installation of Discourse, I get this error.
在本地安装的 Discourse 上运行我的./launcher bootstrap app
命令时/var/docker
,出现此错误。
fatal: unable to access 'https://github.com/SamSaffron/pups.git/': Failed to connect to github.com port 443: Connection refused
FAILED TO BOOTSTRAP
The following is the contents of my containers/app.yml
. I've been using thisguide to try to get it up and running. I've heard of some people having issues with HTTP connections refused due to iptables -L
containing some rules blocking the docker containerfrom connecting to the internet. But it moments before just downloaded an image. So I don't understand.
以下是我的内容containers/app.yml
。我一直在使用本指南来尝试启动并运行它。我听说有些人因为iptables -L
包含一些阻止 docker 容器连接到互联网的规则而拒绝 HTTP 连接的问题。但它刚刚下载了一个图像。所以我不明白。
##
## After making changes to this file, you MUST rebuild for any changes
## to take effect in your live Discourse instance:
##
## /var/docker/launcher rebuild app
##
## this is the all-in-one, standalone Discourse Docker container template
templates:
- "templates/cron.template.yml"
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/sshd.template.yml"
- "templates/web.template.yml"
## which TCP/IP ports should this container expose?
expose:
- "127.0.0.1:20080:80" # fwd host port 80 to container port 80 (http)
- "2222:22" # fwd host port 2222 to container port 22 (ssh)
params:
## Which Git revision should this container use?
version: HEAD
env:
## How many concurrent web requests are supported?
## With 2GB we recommend 3-4 workers, with 1GB only 2
# UNICORN_WORKERS: 3
##
## List of comma delimited emails that will be made admin on signup
DISCOURSE_DEVELOPER_EMAILS: <%= ENV['EMAIL_ADDRESS'] %>
##
## The domain name this Discourse instance will respond to
DISCOURSE_HOSTNAME: 'localhost'
##
## The mailserver this Discourse instance will use
DISCOURSE_SMTP_ADDRESS: smtp.gmail.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: <%= ENV['GMAIL_USERNAME'] %>
DISCOURSE_SMTP_PASSWORD: <%= ENV['GMAIL_PASSWORD'] %>
##
## the origin pull CDN address for this Discourse instance
# DISCOURSE_CDN_URL: //discourse-cdn.example.com
## These containers are stateless, all data is stored in /shared
volumes:
- volume:
host: /var/docker/shared/standalone
guest: /shared
## The docker manager plugin allows you to one-click upgrade Discouse
## http://discourse.example.com/admin/docker
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
## Remember, this is YAML syntax - you can only have one block with a name
run:
- exec: echo "Beginning of custom commands"
## If you want to configure password login for root, uncomment and change:
#- exec: apt-get -y install whois # for mkpasswd
## Use only one of the following lines:
#- exec: /usr/sbin/usermod -p 'PASSWORD_HASH' root
#- exec: /usr/sbin/usermod -p "$(mkpasswd -m sha-256 'RAW_PASSWORD')" root
## If you want to authorized additional users, uncomment and change:
#- exec: ssh-import-id username
#- exec: ssh-import-id anotherusername
- exec: echo "End of custom commands"
- exec: awk -F\# '{print ;}' ~/.ssh/authorized_keys | awk 'BEGIN { print "Authorized SSH keys for this container:"; } NF>=2 {print $NF;}'
回答by redlabo
Are you behind a proxy ? Have you checked your DNS settings ?
This is what I had to do in order to make it run in /etc/default/docker
:
你背后有代理吗?你检查过你的 DNS 设置吗?这是我必须做的才能让它运行/etc/default/docker
:
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --dns x.x.x.x"
If you don't add your DNS (you can find it with nslookup
), chance are that you can't resolve the name of GitHub. But as your attempt to connect does not return explicitly a name not resolved, I don't think you are concerned here. But strangely, I had to do it to make it work.
For the rest I already mentioned what to do in an issue filled on GitHub:
https://github.com/discourse/discourse_docker/issues/79
如果您不添加您的 DNS(您可以使用 找到它nslookup
),您可能无法解析 GitHub 的名称。但是由于您的连接尝试没有明确返回未解析的名称,因此我认为您不必担心。但奇怪的是,我必须这样做才能让它发挥作用。其余的我已经提到了在 GitHub 上填写的问题中要做什么:https:
//github.com/discourse/discourse_docker/issues/79
Edit:I corrected the point, there's no ln, it should read 'in'. As I said in my issue to GitHub, there's a lack of proxy consideration in code. But have you a proxy or a direct access to web ? I bet you have a proxy. If so, take my solution in the link I provided. Basically, if HTTP_PROXY is not added in the environment variables of the image of discourse, no command that relies on it will work (like in the gem command case).
编辑:我更正了这一点,没有 ln,它应该读为“in”。正如我在给 GitHub 的问题中所说的那样,代码中缺乏对代理的考虑。但是你有代理或直接访问网络吗?我打赌你有一个代理。如果是这样,请在我提供的链接中获取我的解决方案。基本上,如果没有在话语图像的环境变量中添加 HTTP_PROXY,则依赖它的任何命令都不会起作用(就像在 gem 命令的情况下一样)。
Example:
例子:
DISCOURSE_SMTP_ADDRESS: smtp.mandrillapp.com # (mandatory)
HTTP_PROXY: http://x.x.x.x:3128/ # my add
DISCOURSE_SMTP_PORT: 587 # (optional)
DISCOURSE_SMTP_USER_NAME: '[email protected]' # (optional)
DISCOURSE_SMTP_PASSWORD: Password # (optional)
In addition, git has its own way of specifying proxy, so I add it in the script to make it run. Otherwise, git will be stuck and timeout will occcur when it will try to pull from repository (seems to be your case).
另外,git有自己指定代理的方式,所以我在脚本中添加,让它运行。否则,当它尝试从存储库中提取时,git 将被卡住并超时(似乎是你的情况)。
Replacement in launcher script of discourse:
替换启动脚本中的话语:
run_command="$run_command git pull &&"
to
到
run_command="$run_command git config --global http.proxy http://x.x.x.x:3128/ && git pull &&"
And/Or (should work too, and in fact if I recall correctly I had to do both...)
和/或(也应该有效,事实上,如果我没记错的话,我必须两者都做......)
/bin/bash -c "$run_command") \
to
到
/bin/bash -c "git config --global http.proxy http://x.x.x.x:3128/;$run_command") \
Clearer ? Concerning the dns, docker configure a lot of things in its configuration file. But to my surprise, the proxy configuration never seemed to be taken into account.Yet, the dns part was interesting as I got error of name resolution too, despite the public dns already configured. So I add the dns of my company, and magically it solved the problem. But I don't think this is your situation, I mentioned this just in case...
更清楚?关于dns,docker在其配置文件中配置了很多东西。但令我惊讶的是,代理配置似乎从未被考虑在内。然而,尽管公共 dns 已经配置,但 dns 部分很有趣,因为我也遇到了名称解析错误。所以我添加了我公司的dns,神奇地解决了这个问题。但我不认为这是你的情况,我提到了这一点以防万一......
回答by MrSo
Try to add your SSH key to Githubbefore retry
在重试之前尝试将您的 SSH 密钥添加到 Github