업그레이드 실패: FAILED TO BOOTSTRAP

Discourse 인스턴스를 업그레이드하던 중 git pull이 필요했는데, 오늘 ./launcher rebuild를 실행하니 FAILED TO BOOTSTRAP 오류가 발생하고 있으며, 아직 실패 원인을 정확히 파악하지 못하고 있습니다.

저희는 Ubuntu 18.04에서 Discourse를 운영하고 있습니다. 오늘 업그레이드 전까지는 모든 것이 정상적으로 작동했습니다.

저희의 app.yml 파일은 web.yml로 명명되어 있으므로, 다음과 같이 실행했습니다:

# git pull
# ./launcher rebuild web

출력 결과의 마지막 부분은 다음과 같습니다:

I, [2022-02-18T19:25:46.155360 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
Discourse requires Redis 6.2.0 or up
I, [2022-02-18T19:25:55.644442 #1]  INFO -- : gem install sawyer -v 0.8.2 -i /var/www/discourse/plugins/discourse-github/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Successfully installed sawyer-0.8.2
1 gem installed
gem install octokit -v 4.21.0 -i /var/www/discourse/plugins/discourse-github/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Successfully installed octokit-4.21.0
1 gem installed
 
 
 
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1121 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
85459e34ac2c6275dd1700de2c469124a9fded84800b8c6b4686c1c6b66824e2
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

전체 출력 보기

현재 설치된 플러그인 목록은 다음과 같습니다:

discourse/docker_manager.git
discourse/discourse-github.git
discourse/discourse-solved.git
discourse/discourse-data-explorer.git
discourse/discourse-akismet.git
discourse/discourse-spoiler-alert.git
cpradio/discourse-plugin-replygif.git
discourse/discourse-push-notifications.git
discourse/discourse-chat-integration

Launcher 출력을 살펴봐도 실패를 유발하는 오류를 찾을 수 없습니다. 실패 원인에 대한 조언이 있을까요?

이전 커밋으로 되돌려 최신 변경 사항 없이 웹 컨테이너를 성공적으로 재빌드할 수 있는지 확인해 보았지만, 여전히 부트스트랩 실패 오류가 발생합니다. :confused:

업데이트:

저희는 별도 컨테이너 설정을 사용 중이었으며, 이는 권장되지 않는 방식으로 밝혀졌습니다. 또한 저희의 데이터 컨테이너는 매우 오래된 버전이었고 Redis v5.0.5를 실행 중이었습니다(Discourse는 현재 6.2.0 이상을 요구합니다). 따라서 데이터 컨테이너를 재빌드한 후 웹 컨테이너도 성공적으로 재빌드했습니다. 이번 경험을 바탕으로 향후에는 멀티 컨테이너 방식을 중단할 예정입니다.

매우 유용한 링크를 공유해 주신 @pfaffman님께 감사드립니다!

어떤 Redis 버전을 사용하고 계신가요?

참고: Skip Redis Version Check

아, 그렇군요. 우리는 discourse_docker를 웹 컨테이너와 데이터 컨테이너를 연결한 상태로 실행하고 있으므로, Redis는 데이터 컨테이너 내에서 실행되고 있습니다.

데이터 컨테이너 내부에서:

# redis-server --version
Redis server v=5.0.5

그러니 이제 원인이 파악되었습니다. 데이터 컨테이너도 업그레이드해야 하는 것 같습니다. 이렇게 되니 조금 더 걱정되네요. 해당 요구사항은 언제 추가된 것일까요? 보강 인력(호주에 있는 사람들)이 깨서 업무 가능할 때까지 웹 컨테이너를 이전 버전으로 되돌릴 수 있을지 검토해 보겠습니다. :wink:

와. git 히스토리를 살펴보니 Redis 버전이 5.x 범위를 벗어난 지 벌써 2년이 된 것 같습니다! 하지만 그동안 git pull을 포함해 몇 번의 성공적인 업그레이드를 수행한 적이 있다는 점은 알고 있습니다.

Redis 버전 확인 건너뛰기에 따르면, 최근에 해당 요구 사항이 강제되기 시작한 것으로 보입니다. 금요일에 이미 꽤 큰 문제를 야기했으니, 도움 없이 데이터 컨테이너 업그레이드를 시도하고 싶지 않습니다… 그래서 당분간 Redis 요구 사항이 강제되지 않는 상태로 돌아가기 위해 docker_discourse의 더 이전 버전으로 되돌려보려 합니다. (데이터 컨테이너를 업데이트할 수 있을 때까지)

그렇게는 작동하지 않습니다. 해당 체크는 메인 저장소에서 이루어지기 때문입니다. 데이터 컨테이너를 여러 해 동안 업데이트하지 않는 것은 좋지 않은 선택입니다. 해당 기간 동안 성능 및 보안 관련 수정 사항을 여러 번 배포했기 때문입니다.

따라서 저는 별도 컨테이너 구성을 권장하지 않는 또 다른 이유를 들었습니다.

데이터 컨테이너를 다시 구축해야 합니다. 또한 PostgreSQL 13 업데이트도 참고하세요.

감사합니다. 지금 바로 Postgres 업그레이드를 기다리고 있습니다. :slight_smile:

Postgres 13 업데이트 팁 링크도 감사합니다. 정말 도움이 됩니다!