./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 연결이 실패하거나, 성공하여 전체 빌드가 완료되기도 합니다.
링크하신 스레드에 명시된 문제와 정확히 일치하지는 않는 것 같고, 실제로는 간헐적으로 발생하는 문제인 것으로 보입니다. 간헐적 문제는 진단하기가 가장 어렵습니다. 하지만 수동으로 fetch를 시도해 볼 수 있습니다. 저는 다음과 같이 해 보았는데, 이는 무해한 작업입니다:
# 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
#
"github.com"이 합리적인 IP 주소로 해석되었고, 연결이 이루어져 데이터를 반환한 것을 확인할 수 있습니다. 실제로 컨테이너 내부에서 실행된 명령어는 컨테이너 외부에서 실행될 때와 매우 유사하게 동작했으며, 이는 예상된 결과입니다.
정보를 제한하려는 의도는 아니었습니다. 해당 회사가 서구 회사가 아니라서 회사 이름만으로는 여러분에게 어떤 정보가 될지 의문이 있었기 때문입니다. 해당 인스턴스는 러시아 최대 호스팅 업체인 reg.ru에서 호스팅되고 있었습니다. 어쨌든 이번에는 그쪽 지원도 도움이 되지 않았습니다(보통은 꽤 괜찮은 편인데). 그래서 제 사이트를 Digital Ocean으로 이전했습니다. 동일한 설정과 Docker 설치에 사용했던 동일한 절차로 진행했는데, 모든 것이 정상적으로 작동했습니다(그리고 현재도 정상적으로 작동하는 것으로 보입니다).