在尝试通过 ./launcher rebuild app 升级 Discourse 时,我遇到了一个问题:
fatal: unable to access 'https://github.com/discourse/REPO.git/': Failed to connect to github.com port 443: Connection timed out
然而,问题是:有时这即使对于 Discourse 也会失败。但是,如果你立即再次尝试,没有任何更改,它可能会成功,但在某个插件上失败。如果我删除所有插件,Discourse 连接可能会失败,或者它可能会成功并实际构建整个东西。
我看到过这个:
但我不知道如何调试容器网络。
1 个赞
Ed_S
(Ed S)
2
您遇到的问题与您链接的帖子中描述的问题不完全一样,而且您似乎遇到了间歇性问题,这类问题总是最难诊断的。但也许您可以尝试手动获取。我尝试了以下操作,这个操作是无害的:
# cd /var/discourse/
# ./launcher enter app
检测到 x86_64 架构。
# wget -O - -v https://github.com/discourse/logster.git/ |wc
--2023-01-04 15:30:25-- https://github.com/discourse/logster.git/
正在解析 github.com (github.com)... 140.82.121.4
正在连接到 github.com (github.com)|140.82.121.4|:443... 已连接。
已发送 HTTP 请求,正在等待响应... 301 Moved Permanently
Location: https://github.com/discourse/logster/ [跟随]
--2023-01-04 15:30:25-- https://github.com/discourse/logster/
正在重新使用到 github.com:443 的现有连接。
已发送 HTTP 请求,正在等待响应... 200 OK
长度:未指定 [text/html]
正在保存到 ‘STDOUT’
- [ <= ] 231.22K --.-KB/s 在 0.06s 内
2023-01-04 15:30:26 (3.99 MB/s) - 已写入 stdout [236767]
2751 15860 236767
#
我们看到“github.com”被解析到一个合理的 IP 地址,已成功连接并返回了一些数据。事实上,在容器内运行的命令与在容器外运行的行为非常相似,这符合预期。
您是否正在使用受支持的安装配方,并且托管在知名的托管公司上?
1 个赞
第一次尝试给出了
Connecting to github.com (github.com)|140.82.121.4|:443... failed: Connection timed out.
Retrying.
默认安装方法
这取决于你如何定义“知名”,但这是一家相当大的公司
Ed_S
(Ed S)
4
好的,它至少在尝试联系一个合理的 IP 地址。我怀疑是路由、防火墙或托管公司级别出了问题。
如果在容器外重新运行测试,您将看到是容器特定的问题还是更普遍的 Linux 问题。
1 个赞
这是一个容器特定的问题。我很难理解是什么导致了这个问题,因为我以前没有修改过容器,而且这个网站已经运行了大约1.5年了。
Ed_S
(Ed S)
6
嗯,所以,在容器外,您可以可靠地运行该测试吗?
也许您可以分享一个经过清理的 app.yml 版本? (我不知道可能是什么问题,但也许有人会发现一些东西。)
当前的安装有多久了 - 根据您的仪表板,它是哪个版本,ID 是多少?
是的
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## 如果你想添加 Lets Encrypt (https),请取消注释这两行
- "templates/web.ssl.template.yml"
- "templates/web.letsencrypt.ssl.template.yml"
expose:
- "80:80" # http
- "443:443" # https
params:
db_default_text_search_config: "pg_catalog.english"
db_shared_buffers: "128MB"
#db_work_mem: "40MB"
#version: tests-passed
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
# DISCOURSE_DEFAULT_LOCALE: en
UNICORN_WORKERS: 2
DISCOURSE_HOSTNAME: domain.example.com
#DOCKER_USE_HOSTNAME: true
DISCOURSE_DEVELOPER_EMAILS: 'some@emails.com'
DISCOURSE_SMTP_ADDRESS: smtp.domain.com
DISCOURSE_SMTP_PORT: port
DISCOURSE_SMTP_USER_NAME: email@email.com
DISCOURSE_SMTP_PASSWORD: "password"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
DISCOURSE_SMTP_DOMAIN: domain.com
DISCOURSE_NOTIFICATION_EMAIL: email@email.com
## 如果你添加了 Lets Encrypt 模板,请取消注释下面以获取免费 SSL 证书
LETSENCRYPT_ACCOUNT_EMAIL: email@email.com
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## Docker 容器是无状态的;所有数据都存储在 /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## 插件放在这里
## 参见 https://meta.discourse.org/t/19157 获取详情
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/discourse-math.git
- git clone https://github.com/discourse/discourse-reactions.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-spoiler-alert.git
- git clone https://github.com/discourse/discourse-whos-online.git
- git clone https://github.com/discourse/discourse-assign.git
- git clone https://github.com/discourse/discourse-cakeday.git
- git clone https://github.com/discourse/discourse-akismet.git
- git clone https://github.com/discourse/discourse-data-explorer.git
- git clone https://github.com/discourse/discourse-gamification
- git clone https://github.com/discourse/discourse-checklist
- git clone https://github.com/discourse/discourse-footnote
- git clone https://github.com/discourse/discourse-yearly-review
- git clone https://github.com/discourse/discourse-encrypt.git
## 构建后要运行的任何自定义命令
run:
- exec: echo "Beginning of custom commands"
- exec: echo "End of custom commands"
注意:我尝试过不带任何插件构建应用程序。它要么无法获取 discourse 本身,要么无法克隆列表中的第 3 个或第 4 个插件(这意味着只有 2-3 个插件,我可以在第 3-4 次尝试中构建一个应用程序)。
在我尝试升级到 3.0.0.beta15 之前是 2.9.0.beta14,不记得具体的 ID 了,但上次升级是在 12 月 25-26 日左右。
Stephen
(Stephen)
8
您能更明确地说明您使用的提供商,那肯定会有所帮助。他们的网络复杂程度差异很大。
这样盲目地排查问题可能要花费更长的时间。
4 个赞
我并不是想限制可用的信息,而是想知道这个名字是否对你有意义,因为它不是一家西方公司。这个实例是由俄罗斯最大的主机提供商 reg.ru 托管的。不管怎样,他们这次的支持 也没有提供帮助,所以我把我的网站迁移到了 digital ocean。使用相同的设置,相同的 Docker 安装过程,一切都(并且似乎)运行正常。
2 个赞
system
(system)
关闭
10
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.