Angular
Angular 브라우저 빌드·프리렌더 페이지·Node SSR을 배포합니다.
나이트로쉽은 Angular의 application 빌더를 지원하며 브라우저 자산과 Node SSR 출력을 분리합니다.
감지와 빌드 결과
- 감지 조건:
package.json의@angular/core와@angular/build또는@angular-devkit/build-angular, 그리고angular.json.ng build스크립트를 둡니다. - 프로젝트는
ng build <프로젝트>,defaultProject, 또는angular.json의 유일한 application에서 선택합니다. 앱이 여러 개라면 빌드 스크립트에 프로젝트 이름을 적으세요. - 기본 출력 기준 폴더는
dist/<프로젝트>이며 설정한outputPath를 반영합니다.@angular/ssr가 있으면 기준 폴더 안의server/server.mjs로 서버 번들을 실행하고(소스 구조에서는node dist/<프로젝트>/server/server.mjs),browser폴더는 CDN에서 제공합니다. - SSR이 없으면
dist/<프로젝트>/browser를 정적 SPA로 게시하고/index.html대체 규칙을 자동으로 추가합니다.outputMode: "static"이면 같은 browser 폴더를 미리 생성한 페이지로 게시하며 SPA 대체 규칙은 추가하지 않습니다. 두 정적 모드 모두 컴퓨트 리전이 필요 없습니다.
배포하기
CLI 설치
curl -fsSL https://nitroship.co/install.sh | bash
ntro login이미 설치했다면 다음 단계로 넘어가세요. 설치 옵션, PATH 설정 및 업데이트는 CLI 설치에서 확인하세요.
{
"build": {"framework": "angular"},
"compute": {"regions": ["kr-icn"]}
}build.framework를 적으면 자동 감지를 건너뛰고 이 프리셋을 씁니다. 루트에 Dockerfile이 있어도 마찬가지이고, build.dockerfile과는 함께 쓸 수 없습니다. 적지 않았을 때 어떤 순서로 감지하는지는 빌드 방식 선택에 정리해 두었습니다.
ntro apps create my-angular-app
ntro deploy . --prod의존성을 먼저 설치하면 ntro deploy . --prod --local로 내 컴퓨터에서 빌드할 수도 있습니다. 배포 후 CLI가 보여 준 주소에서 정적 파일과 서버 라우트를 열어 보세요.
SSR 호스트 허용 목록
최근 Angular SSR 서버는 요청의 호스트 이름을 확인합니다. 나이트로쉽은 값이 없으면 NG_ALLOWED_HOSTS=*를 설정하며, 엣지에서 이미 앱의 도메인 연결을 확인합니다. NG_ALLOWED_HOSTS를 직접 설정하면 쉼표로 구분한 허용 목록을 그대로 사용합니다. 이 경우 제공할 배포·커스텀 호스트 이름을 모두 포함하세요. 환경 변수를 참고하세요.
배포 후 렌더링된 경로와 브라우저 자산 파일을 열어 보세요. 정적 SPA는 하위 경로를 직접 열어 자동 대체 규칙을 확인합니다.
알아둘 점
서버를 배포하려면 컴퓨트 리전을 정해야 합니다. 서버는 0.0.0.0:$PORT(기본 3000)에서 요청을 받아야 합니다. 클라이언트 자산은 CDN에서 내려가고, SSR과 API 요청은 Node 서버 하나가 모두 처리합니다. Next.js처럼 라우트마다 함수를 따로 나누지는 않습니다.
마이그레이션·큐 워커·스케줄러는 자동으로 실행하지 않습니다. 마이그레이션은 CI나 로컬에서 실행하고, 정기 작업은 예약 작업을 참고하세요. 업로드 파일은 S3 같은 오브젝트 스토리지에 저장하고, 비밀 값은 환경 변수로 설정하세요.
지원하는 어댑터나 출력 구조와 다른 구성이 필요하면 직접 만든 Dockerfile을 사용하세요. 이때 build.framework 설정을 빼고 Dockerfile에서 설치·빌드·실행을 정의합니다.