포함된 자산은 어떤 명령어/프로세스를 통해 빌드되나요?

빌드 과정에서 스타일시트 에셋(예: /stylesheets/color_definitions_dark_1_1_603243e2b6c0b7xydx234the00538538bd705.css)을 생성하는 프로세스는 무엇인가요?

이것이 번들링 과정인 것 같습니다.

이 파일들이 누락되어 있다면 무엇이 잘못되었을 수 있나요?

ember-cli 또는 rails 서버를 시작하는 과정의 일부로 이 파일들이 생성되어야 하나요?

표준 Discourse 이미지에서 Docker를 사용하여 이 파일들을 빌드하려면 어떤 접근 방식을 취해야 하나요, 아니면 단순히 서버를 시작하면 존재할 것으로 기대해야 하나요?

스타일시트는 rails 앱에 의해 필요할 때 생성되므로, 이론적으로는 수동으로 아무것도 할 필요가 없습니다.

bin/rake assets:precompile을 실행하면 스타일시트가 즉시 컴파일되며, 여러 호스트에 배포하기 위해 최적화된 docker 이미지를 생성하려는 경우 유용할 수 있습니다.

데이비드, 고마워. 덕분에 조사를 훨씬 좁혀서 진행할 수 있겠어.

아하! 항상 궁금했던 부분이었네요.

만약 S3에 있고 on-demand로 컴파일된다면, S3에도 업로드되나요?

요청 시 컴파일되는 에셋(예: 스타일시트, 테마 JavaScript, SVG 스프라이트)은 S3에 업로드되지 않습니다. 이들은 애플리케이션에서 직접(또는 설정된 경우 CDN_URL을 통해) 가져옵니다.

코어/플러그인 JS나 로케일과 같은 정적 요소는 assets:precompile을 통해 생성되며, 런타임에 변경되지 않는 것이 보장됩니다.

아, 그렇군요. 일부 콘텐츠가 애플리케이션에서 서빙되는 이유를 설명해 줍니다. 여러 컨테이너가 실행 중인 경우(예: 로드 밸런서 뒤) 각각이 이러한 자산을 요청 시 생성하게 되겠네요.

네, 정확합니다. 이런 것들은 보통 postgres/redis에 캐시되므로, 요청을 받은 첫 번째 앱 컨테이너만 생성하면 됩니다. 다른 컨테이너들은 redis/postgres에서 컴파일된 버전을 저렴하게 가져와 파일시스템에 쓰면 됩니다.

그리고 CDN이 있다면 아예 그럴 필요가 없을 수도 있겠네요.

저는 어떤 에셋이 로드되지 않는 문제를 겪고 있는 사람과 함께 작업 중인데(일부 아이콘이 매우 크게 표시되는 경우), 이에 대한 설명을 찾고 있습니다.