플러그인 설치 시 표준 지침을 따랐는데도 컨테이너 재구성이 계속 실패합니다

DigitalOcean(DO)에서 표준 방식으로 Discourse를 설치하여 사용하고 있습니다. 처음에는 모든 것이 정상적으로 작동했으나, 아래 링크의 가이드를 따라 플러그인을 하나 추가하기로 결정했습니다.

다음과 같은 라인을 추가했습니다.

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git && sudo -E -u discourse git clone https://github.com/discourse/discourse-templates.git

컨테이너가 재빌드되지 않고 실패하고 있습니다.

--------------------
Pups::ExecError: echo "End of custom commands failed with return #<Process::Status: pid 5121 exit 2>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params "echo \"End of custom commands"
bootstrap failed with exit code 2

모든 명령어는 root 권한으로 실행되었습니다. 이것이 문제의 원인이라고 생각합니다.

I, [2024-04-18T04:28:49.985355 #1]  INFO -- : > cd /var/www/discourse/plugins && sudo -E -u discourse git clone https://github.com/discourse/docker_manager.git && sudo -E -u discourse git clone https://github.com/discourse/discourse-templates.git
Cloning into 'docker_manager'...
warning: unable to access '/root/.config/git/attributes': Permission denied
Cloning into 'discourse-templates'...
warning: unable to access '/root/.config/git/attributes': Permission denied

이 부분에 대해 조언을 부탁드립니다.

이것을 빼고 시도해 보세요.

저는 그냥 - git clone ...만 사용합니다.

… 그리고 몇 년 동안 잘 작동해 왔습니다!

접근이 거부되었습니다. 루트 권한으로 실행 중인지 확인해 보셨나요?

저는 공식 Discourse 플러그인 설치 가이드로 여기 게시된 가이드를 따르고 있습니다. 모든 플러그인이 이 가이드로 링크되어 있습니다. 제 경우에는 이 가이드가 설치를 망가뜨렸고, 심지어 초기 yml 설정으로 다시 재구축해도 복구할 수 없습니다.

우리가 루트 권한으로 실행했을 것이라고 거의 확신합니다. 지침을 따랐지만 설치가 중단되었고, 초기 yml 설정에서도 재구성이 불가능합니다.

빌드가 실패해도 아무것도 파괴되지 않으며, 잠시 오프라인 상태가 될 뿐입니다.

데이터베이스는 그대로 유지됩니다.

다음 명령으로 포럼이 실행될까요?

 ./launcher start app

제 추측으로는 탭이나 기타 문자가 삽입되어 yml 파일이 무효화되었을 가능성이 큽니다.

에러는 yml 파일 맨 끝의 "echo"와 관련되어 있으며, 이는 그 앞 어딘가에 포맷 문제가 있음을 시사합니다.

파일을 편집하기 전에 사본을 저장해 두셨나요, 아니면 편집 전 상태로 복원하기 위해 파일을 수정해 보셨나요?

시도해 볼 수 있는 방법은 app.yml의 이름을 변경하고 값(특히 SMTP 관련 설정)을 메모한 후 ./discourse-setup을 다시 실행하는 것입니다. 이렇게 하면 정상적으로 작동하는 app.yml이 생성됩니다.

이 명령은 포럼을 시작합니다.
./discourse-setup을 실행하면 기존 포럼 데이터가 유지되는지, 아니면 먼저 백업하고 복원해야 하는지 궁금합니다. 도움을 주셔서 감사합니다.

네. 기존 데이터베이스 등은 그대로 유지됩니다. 이 방법은 단순히 새로운 app.yml 파일을 만드는 것입니다.

친애하는 @pfaffman님과 @merefield님, 도움을 주셔서 감사합니다.

문제가 2가지 있었습니다:

  1. 심각함 - YML 문법 오류, YML 검증기로 수정
  2. 덜 심각함 - sudo -E -u discourse를 단순히 git clone(루트 권한으로)으로 대체

이로 인해 플러그인을 재빌드하고 설치할 수 있게 되었습니다.

정말 감사합니다,