구동 중인 인스턴스에서 약간 오래된 버전의 Discourse 컨테이너와 Docker 파일을 내보낸 후 다른 서버에 가져왔습니다.
새로운 서버에 맞게 Discourse 호스트명을 변경해야 합니다.
DISCOURSE_HOSTNAME:을 재빌드 없이 적용할 수 있는 방법이 있나요?- 재빌드가 필수적인 경우,
main브랜치의 최신 버전을 가져와 현재 실행 중인 버전을 덮어쓰게 되나요? 저는 정확히 현재 버전을 실행해야 하기 때문입니다.
구동 중인 인스턴스에서 약간 오래된 버전의 Discourse 컨테이너와 Docker 파일을 내보낸 후 다른 서버에 가져왔습니다.
새로운 서버에 맞게 Discourse 호스트명을 변경해야 합니다.
DISCOURSE_HOSTNAME:을 재빌드 없이 적용할 수 있는 방법이 있나요?main 브랜치의 최신 버전을 가져와 현재 실행 중인 버전을 덮어쓰게 되나요? 저는 정확히 현재 버전을 실행해야 하기 때문입니다.안녕하세요 Islam ![]()
제가 아는 한 그런 방법은 없습니다.
네, 그렇게 됩니다.
원하시는 작업을 위해 관련 정보를 여기서 찾을 수 있습니다: Search results for 'install version discourse' - Discourse Meta
Let’s Encrypt 설정을 변경해야 하는데, 이것이 (적어도 일부) 재빌드가 필요한 이유입니다.
왜 업그레이드를 하지 않나요? 실제로 해야 할 일이 그것입니다. 얼마나 오래된 버전인가요?
하지만 discourse_docker(즉, /var/discourse와 현재 사용 중인 Discourse 버전)를 고정(pinning)하는 방식으로 우회할 수 있습니다. 모든 플러그인도 고정해야 할 수 있습니다.
HTTPS 처리를 다른 도구로 하고 있다면 재빌드를 피하고 Change the domain name or rename your Discourse 의 다른 조치만 수행할 수 있을 것입니다.
최신 버전으로 업그레이드하는 것을 테스트하기 위해 해당 인스턴스에 동일한 버전을 유지해야 합니다. 성공하면 프로덕션 환경에서 업그레이드를 수행할 예정입니다.
HTTPS 처리를 다른 구성 요소에서 수행하고 있다면, 재빌드를 피하고 Change the domain name or rename your Discourse에 나와 있는 나머지 작업만 수행할 수 있을지도 모릅니다.
HTTPS는 로드 밸런서에서 처리되고 있지만, 해당 링크에는 app.yml을 수정한 후 재빌드가 필요하다고 명시되어 있습니다.
discourse_docker의 경우 현재 커밋 해시를 체크아웃해야 하나요?version: <commit_hash>를 사용하여 현재 커밋 해시를 설정해야 하나요?테스트 서버에 현재 버전을 설치하고 데이터베이스를 복원하면 프로덕션 서버를 업그레이드할 수 있을 가능성이 높습니다.
제안하신 방법은 수 시간의 작업이 소요되며, 포럼에서 설명하기 어려운 복잡한 세부 사항이 많고, 새 서버에 프로덕션 데이터베이스를 복원하는 것보다 더 많은 것을 입증하지는 못할 것입니다.
스테이징 서버와 프로덕션 서버를 동일한 S3 백업 버킷을 가리키도록 설정하고, 프로덕션을 백업한 후 스테이징 서버에 복원하십시오. 이후 두 환경이 동일한 상태가 되어 스테이징과 프로덕션을 빠르게 연속하여 업그레이드할 수 있습니다.
재빌드를 트리거했는데 다음과 같은 결과가 나왔습니다:
I, [2023-04-07T19:17:58.707365 #1] INFO -- : > cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock)
ERROR: Could not find a valid gem 'bundler' (= 2.3.4), here is why:
Unable to download data from https://rubygems.org/ - Net::OpenTimeout: execution expired (https://rubygems.org/specs.4.8.gz)
하지만 호스트에서는 curl로 rubygems.org에 접근할 수 있습니다.
위 오류에 대해 어떤 제안이 있으신가요?
명령줄을 통해 재빌드했나요? 표준 설치인가요?
네, rebuild 명령어를 실행해도 GUI에서 업그레이드를 시작했을 때와 동일한 오류가 발생합니다.
Retrying fetcher due to error (4/4): Bundler::HTTPError Could not fetch specs from https://rubygems.org/ due to underlying error <Net::OpenTimeout: execution expired (https://rubygems.org/specs.4.8.gz)>
There was an error installing the locked bundler version (2.4.4), rerun with the `--verbose` flag for more details. Going on using bundler 2.3.6.
Fetching source index from https://rubygems.org/
Could not fetch specs from https://rubygems.org/ due to underlying error
<Net::OpenTimeout: execution expired (https://rubygems.org/specs.4.8.gz)>
Docker Manager: FAILED TO UPGRADE