在本地安装的 Discourse 上从 /var/docker
运行我的 ./launcher bootstrap app
命令时,出现此错误。
fatal: unable to access 'https://github.com/SamSaffron/pups.git/': Failed to connect to github.com port 443: Connection refused
FAILED TO BOOTSTRAP
以下是我的containers/app.yml
的内容。我一直在使用 this尝试启动并运行它的指南。我听说有些人因为 iptables -L
包含一些 rules blocking the docker container 而拒绝 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 $1;}' ~/.ssh/authorized_keys | awk 'BEGIN { print "Authorized SSH keys for this container:"; } NF>=2 {print $NF;}'
最佳答案
你有代理吗?您检查过您的 DNS 设置了吗?
这是我必须做的才能让它在 /etc/default/docker
中运行:
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --dns x.x.x.x"
如果您不添加您的 DNS(您可以使用 nslookup
找到它),您很可能无法解析 GitHub 的名称。但是由于您的连接尝试没有明确返回未解析的名称,因此我认为您不关心这里。但奇怪的是,我必须这样做才能让它发挥作用。
对于其余部分,我已经在 GitHub 上的一个问题中提到了要做什么:
https://github.com/discourse/discourse_docker/issues/79
编辑: 我纠正了这一点,没有ln,它应该读作“in”。 正如我在 GitHub 的问题中所说,代码中缺乏对代理的考虑。 但是你有代理或直接访问网络吗?我打赌你有一个代理。 如果是这样,请在我提供的链接中采用我的解决方案。基本上,如果不在话语图像的环境变量中添加 HTTP_PROXY,则依赖它的任何命令都将不起作用(如 gem 命令情况)。
例子:
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: 'xx@xx.com' # (optional)
DISCOURSE_SMTP_PASSWORD: Password # (optional)
另外,git有自己的指定proxy的方式,所以我在脚本中加上,让它运行起来。否则,当 git 尝试从存储库中 pull 数据时(似乎是你的情况),git 将被卡住并超时。
话语启动脚本中的替换:
run_command="$run_command git pull &&"
到
run_command="$run_command git config --global http.proxy http://x.x.x.x:3128/ && git pull &&"
和/或(也应该有效,事实上,如果我没记错的话,我必须同时执行这两项...)
/bin/bash -c "$run_command") \
到
/bin/bash -c "git config --global http.proxy http://x.x.x.x:3128/;$run_command") \
更清晰? 关于 dns,docker 在其配置文件中配置了很多东西。但令我惊讶的是,代理配置似乎从未被考虑在内。然而,dns 部分很有趣,因为我也遇到了名称解析错误,尽管已经配置了公共(public) dns。所以我添加了我公司的 dns,神奇地解决了问题。但我不认为这是你的情况,我提到这个只是为了以防万一......
关于git - 无法连接到 github.com 端口 443 : Connection refused, 引导失败,Discourse Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24873340/