위 링크를 보면 이미지와 첨부 파일이 Docker 내부가 아니라 Discourse 설치 환경의 더 깊은 공유 폴더에 저장되어 있음을 알 수 있습니다. 제 2차 스토리지에서 NFS 마운트한 이미지 폴더를 심볼릭 링크로 사용하여 다른 서버에 마운트하고자 합니다. 그리고 보조 서버에서는 로드 밸런싱/장애 전환(failover) 수단으로 Discourse Docker 컨테이너를 실행하면서, 동일한 NFS 마운트된 이미지 폴더를 사용하고 싶습니다. DB는 이미 네트워크 서버에서 사용하고 있습니다.
해당 설정을 테스트해 보았지만 결과가 좋지 않았습니다. /var/discourse/shared/standalone/uploads의 모든 이미지 파일을 /var/www/image/uploads로 복사한 후,
NFS 마운트된 이미지 폴더로 심볼릭 링크를 생성했습니다.
/uploads 폴더에 대해 www-data:www-data 소유권과 755 권한을 설정했습니다(chmod & chown).
원래 이미지 폴더가 네이티브로 마운트된 프라이머리 서버에서는 이미지를 볼 수 있지만, NFS 마운트된 보조 서버에서는 그렇지 않습니다. 이미지 크기가 있는 컨테이너만 표시되고 실제 이미지는 누락되어 있습니다.
게다가 프라이머리 서버에서도 이미지는 보이지만 더 이상 다운로드할 수 없습니다.
파일 권한 문제인 것 같습니다. 이상적인 설정이 무엇인지 궁금합니다.
바닐라(기본) 상태인지, 아니면 여러 번 재빌드한 탓인지 확실하지 않지만, 제 서버에서 기본 폴더의 이미지는 755/644(폴더/파일) 권한과 main_id:www-data 소유권을 가지고 있습니다. 동일한 전략을 적용해 보았지만 작동하지 않았습니다. 심볼릭 링크 또는 NFS와 관련된 특정 문제일 수 있지만, 더 이상 원인을 추적할 수 없습니다.
처음에 시도했던 방법입니다. 도커 내부에서 이전에 발견했던 파일 시스템이 다소 엉망인 상태였습니다. /default/ 경로가 나타나는 것보다 앞서 /uploads/uploads/uploads 형태로 중첩되어 있었습니다. 정확히 무슨 일이 있었는지는 모르겠지만, 내부의 모든 파일을 이미지 마운트로 복사한 뒤, 해당 마운트 폴더를 볼륨으로 추가했습니다.
여기서 상황은 심볼릭 링크와 크게 다르지 않았습니다. 파일 권한이 실제로 동일한 문제를 일으키고 있었습니다. 파일이 실제로는 도커 컨테이너 외부에 저장된다는 것을 이해한 후, 심볼릭 링크가 훨씬 더 쉬운 해결책이라고 생각하게 되었습니다.
두 경우 모두 파일 권한 문제라고 거의 확신하지만, 심볼릭 링크가 작동하지 않는 한 도커 볼륨보다 Nginx 서버 블록으로만 구성하는 자체 CDN 방식이 훨씬 더 간단한 해결책처럼 보입니다.
심볼릭 링크를 사용하면 좋은 결과가 나오지 않을 것이라고 거의 확신합니다. 그 중 하나의 문제는 컨테이너 내부와 외부에서 심볼릭 링크를 동일하게 유지하기가 어렵다는 점이며, 저는 중첩된 업로드 문제가 바로 그것과 관련이 있다고 추측합니다. 심볼릭 링크 사용을 권장하지 않는다는 조언을 본 적이 있는데, 이것이 그 이유라고 생각합니다.