Ao tentar atualizar o Discourse via ./launcher rebuild app, recebo um problema com
fatal: unable to access 'https://github.com/discourse/REPO.git/': Failed to connect to github.com port 443: Connection timed out
No entanto, o problema é: às vezes isso falha mesmo para o Discourse. Mas se você tentar fazer isso novamente, imediatamente depois, sem alterações, pode funcionar, mas falhar em um dos plugins. Se eu remover todos os plugins, a conexão do Discourse pode falhar ou pode funcionar e realmente construir tudo.
Você não tem exatamente o problema descrito no tópico que você vinculou, e de fato parece ter um problema intermitente, que é sempre o mais difícil de diagnosticar. Mas talvez você possa tentar um fetch manual. Eu tentei isso, o que é inofensivo:
# cd /var/discourse/
# ./launcher enter app
x86_64 arch detected.
# wget -O - -v https://github.com/discourse/logster.git/ |wc
--2023-01-04 15:30:25-- https://github.com/discourse/logster.git/
Resolving github.com (github.com)... 140.82.121.4
Connecting to github.com (github.com)|140.82.121.4|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://github.com/discourse/logster/ [following]
--2023-01-04 15:30:25-- https://github.com/discourse/logster/
Reusing existing connection to github.com:443.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘STDOUT’
- [ <=> ] 231.22K --.-KB/s in 0.06s
2023-01-04 15:30:26 (3.99 MB/s) - written to stdout [236767]
2751 15860 236767
#
Vemos que “github.com” foi traduzido para um endereço IP razoável, foi contatado e retornou alguns dados. Na verdade, o comando executado dentro do contêiner se comportou de maneira muito semelhante a como se comporta fora do contêiner, e isso é esperado.
Você está usando uma receita de instalação suportada, em uma empresa de hospedagem conhecida?
OK, então ele está pelo menos tentando contatar um endereço IP razoável. Suspeitaria de algo errado com o roteamento, ou firewall, ou algo errado no nível da empresa de hospedagem.
Se você executar o teste novamente fora do contêiner, verá se tem um problema específico do contêiner ou um problema mais geral do Linux.
É um problema específico do contêiner. Estou tendo dificuldades para entender o que pode ter causado isso, pois não modifiquei o contêiner antes e o site tem cerca de 1,5 ano.
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Descomente estas duas linhas se desejar adicionar 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 # (opcional, padrão true)
DISCOURSE_SMTP_DOMAIN: domain.com
DISCOURSE_NOTIFICATION_EMAIL: email@email.com
## Se você adicionou o template Lets Encrypt, descomente abaixo para obter um certificado SSL gratuito
LETSENCRYPT_ACCOUNT_EMAIL: email@email.com
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## O contêiner Docker é sem estado; todos os dados são armazenados em /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins vão aqui
## veja https://meta.discourse.org/t/19157 para detalhes
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
## Quaisquer comandos personalizados para executar após a compilação
run:
- exec: echo "Início dos comandos personalizados"
- exec: echo "Fim dos comandos personalizados"
Nota: Tentei compilar o aplicativo sem nenhum plugin. Ele falha ao buscar o próprio discourse ou falha ao clonar o 3º ou 4º plugin na lista (o que significa que com apenas 2-3 plugins, consigo compilar um aplicativo a partir da 3ª-4ª tentativa).
Era 2.9.0.beta14 pouco antes de eu tentar atualizar para 3.0.0.beta15, não me lembro do ID específico, mas a última vez que foi atualizado foi em algum momento entre 25 e 26 de dezembro.
Não é que eu estivesse tentando limitar as informações disponíveis, é mais sobre se o nome lhe dirá algo, já que não é uma empresa ocidental. A instância foi hospedada pela reg.ru, a maior hospedagem na Rússia. De qualquer forma, o suporte deles desta vez[1] não foi útil, então mudei meu site para a DigitalOcean. Com as mesmas configurações, o mesmo procedimento usado para a instalação do Docker, tudo funcionou (e parece funcionar) bem.