좋은 질문이지만, 딱히 좋은 답변을 드리기 어렵습니다.
컨테이너 내부에서 사용되는 구성 시스템은 다음과 같습니다:
해당 README에는 훅이 일반적으로 어떻게 작동하는지 설명되어 있습니다. 사용할 수 있는 특정 훅은 인스턴스가 어떻게 설정되어 있는지에 따라 달라집니다. 메인 app.yml 파일에는 하나 이상의 템플릿이 포함됩니다. 대부분의 경우, 그중 하나는 web.template.yml입니다:
assets_precompile 훅은 여기서 정의되어 있습니다(작성 시점 기준 [L159] 라인). pups 문서에 따르면, before_assets_precompile과 after_assets_precompile을 사용하여 해당 작업이 완료되기 전후로 다른 명령을 실행할 수 있습니다.
명령어는 docker 컨테이너 내부에서 실행되므로, 이를 위해 별도의 조치는 취할 필요가 없습니다.
cd: 지시문은 /var/www/discourse/public/assets/ 경로로 바로 지정할 수 있으며, cmd의 각 줄은 해당 디렉터리에서 실행됩니다. (경고: cmd 배열의 각 줄은 Makefile과 마찬가지로 별도의 셸에서 실행됩니다.)
빌드 간에 /var/www/discourse/public/assets/의 내용이 유지되는지 확실하지 않으므로, 로컬 git 저장소를 생성하고 매번 강제 푸시(force push)해야 할 수 있습니다. “더 정확한” 해결책은 app.yml에 정의된 다른 볼륨들처럼 app.yml에서 자산 디렉터리를 위한 docker 볼륨을 정의하여 컨테이너 외부에 영구적으로 저장하는 것입니다.