반응(Reactions) 플러그인이나 번역 플러그인을 containers/app.yml 파일에 추가한 뒤 앱을 다시 빌드하면 다음과 같은 출력이 나타납니다. 이상하게도 오류 메시지에 네덜란드어 문구가 포함되어 있습니다.
Ensuring launcher is up to date
Fetching origin
warning: unable to access '.git/info/grafts': Structure moet worden opgeschoond
warning: unable to access '.git/info/grafts': Structure moet worden opgeschoond
warning: unable to access '.git/info/grafts': Structure moet worden opgeschoond
Updating Launcher...
warning: unable to access '.git/info/grafts': Structure moet worden opgeschoond
warning: unable to access '.git/info/grafts': Structure moet worden opgeschoond
warning: unable to access '.git/info/grafts': Structure moet worden opgeschoond
Updating 333b879..f982cc4
warning: unable to access '.git/info/attributes': Structure moet worden opgeschoond
warning: unable to access '.git/info/exclude': Structure moet worden opgeschoond
error: Your local changes to the following files would be overwritten by merge:
image/base/Dockerfile
image/base/install-gifsicle
image/base/install-imagemagick
image/base/install-nginx
image/base/install-pngcrush
image/base/install-pngquant
image/base/install-redis
Please commit your changes or stash them before you merge.
Aborting
failed to update
Launcher updated, restarting...
그리고 이 과정이 CTRL+C를 누를 때까지 무한히 반복됩니다.
아마 제가 뭔가 잘못하고 있는 것 같습니다. 모든 것을 최신 버전으로 업데이트해 보았지만 효과는 없었습니다.
죄송합니다. 눈에 띄는 문제는 없었습니다. - exec 앞에 두 칸의 공백이 필요할 수 있습니다(혹은 복사/붙여넣기 과정에서 형식이 깨진 건가요?). 제가 익숙하거나 그런 오류를 유발할 것으로 예상되는 오류는 아닙니다. 음. - exec 앞에 4칸, 나머지 줄 앞에 2칸의 공백이 필요할 수도 있습니다. app.yml 파일을 (이름을 변경하거나) 복사한 뒤 discourse-setup을 다시 실행하고, discourse_docker 줄을 주의 깊게 복사/붙여넣은 후 추가 플러그인을 위해 편집해 볼 수 있습니다.
제안하신 방법을 시도해 봤는데, discourse-setup를 실행할 때 뭔가 나오더라고요. 다음과 같은 메시지가 표시되었습니다:
WARNING: Discourse requires at least 2GB of swap when running with 2GB of RAM
or less. This system does not appear to have sufficient swap space.
Without sufficient swap space, your site may not work properly, and future
upgrades of Discourse may not complete successfully.
Ctrl+C to exit or wait 5 seconds to have a 2GB swapfile created.
install: kan geen toegang krijgen tot '/swapfile': Structure moet worden opgeschoond
fallocate: cannot open /swapfile: Structure moet worden opgeschoond
mkswap: cannot open /swapfile: Structure moet worden opgeschoond
swapon: cannot open /swapfile: Structure moet worden opgeschoond
/swapfile swap swap auto 0 0
vm.swappiness = 10
Failed to create swap: are you root? Are you running on real hardware, or a fully virtualized server?
free 명령어를 확인해 보니 VPS에 스왑이 사용 가능하지 않다고 나옵니다. 이상한 점은 이전에도 스왑이 없었는데 사이트는 잘 돌아가고 있었습니다. 플러그인 설치도 성공적으로 마쳤습니다.
실제로 손상된 파일 시스템은 XFS였습니다. 이를 복구하려면 XFSprogs를 설치해야 했는데, apt-get으로 설치를 시도했을 때 동일한 오류가 발생하여 설치가 불가능했습니다.
플러그인 설치와 앱 재구성은 메모리 집약적인 작업이라는 점을 깨달았습니다. 그런데 제 작은 포럼은 2GB 미만의 RAM과 15GB의 디스크 공간을 가진 동일한 하드웨어를 사용하고 있었습니다. 스왑이 비활성화되어 있었고, 플러그인 설치 과정에서 여러 번 재부팅을 해야 했기 때문에 메모리 문제가 발생했다고 추정합니다. 이는 파일 시스템에 좋지 않았고, XFS는 GIT 폴더를 포함한 일부 영역에 안전 장치를 적용한 것으로 보입니다.
결국 백업(다행히 S3에 저장되어 있어 문제가 없었습니다)을 가져오고, app.yml 파일의 백업을 만든 뒤 VPS를 다시 시작하고 이 가이드를 참고하여 스왑을 설정했습니다(Debian VPS). 1시간도 안 돼 모든 것이 다시 정상 작동했습니다. 몇 땀 흘렸지만요.