Node 서버
NestJS·Express·Fastify·Hono·Koa를 관리형 Node 서버로 배포합니다.
나이트로쉽은 지원하는 Node HTTP 서버와 프로덕션 의존성을 함께 묶어 배포합니다. 표준 JavaScript 진입점이라면 Dockerfile은 필요 없습니다.
감지와 빌드 결과
| 프리셋 슬러그 | 의존성 감지 조건 | 진입점 |
|---|---|---|
nestjs | @nestjs/core | node dist/main.js |
express | express | scripts.start의 node <파일>, 없으면 package.json의 main |
fastify | fastify | 위와 같은 진입점 규칙 |
hono | hono와 @hono/node-server | 위와 같은 진입점 규칙 |
koa | koa | 위와 같은 진입점 규칙 |
NestJS에는 build 스크립트가 필요합니다. 다른 서버는 "start": "node dist/server.js" 같은 단순 실행 스크립트가 main보다 우선합니다. 진입점은 프로젝트 안의 JavaScript 파일이어야 하며 TypeScript 소스나 임의의 셸 명령은 사용할 수 없습니다. TypeScript 프로젝트에는 선택한 JavaScript 파일을 생성하는 빌드 단계가 필요합니다.
런타임 코드·자산·프로덕션 의존성을 함께 묶습니다. 실행에 필요한 패키지는 dependencies에 넣으세요. devDependencies는 배포 런타임에서 제외합니다. 이 서버 프리셋은 CDN 폴더를 따로 만들지 않으므로 자산도 서버가 제공합니다.
예시는 express를 선택합니다. 서버에 맞는 슬러그로 바꾸세요. node-servers는 문서 그룹 이름이지 프리셋 슬러그가 아닙니다.
배포하기
CLI 설치
curl -fsSL https://nitroship.co/install.sh | bash
ntro login이미 설치했다면 다음 단계로 넘어가세요. 설치 옵션, PATH 설정 및 업데이트는 CLI 설치에서 확인하세요.
{
"build": {"framework": "express"},
"compute": {"regions": ["kr-icn"]}
}build.framework를 적으면 자동 감지를 건너뛰고 이 프리셋을 씁니다. 루트에 Dockerfile이 있어도 마찬가지이고, build.dockerfile과는 함께 쓸 수 없습니다. 적지 않았을 때 어떤 순서로 감지하는지는 빌드 방식 선택에 정리해 두었습니다.
ntro apps create my-node-servers-app
ntro deploy . --prod의존성을 먼저 설치하면 ntro deploy . --prod --local로 내 컴퓨터에서 빌드할 수도 있습니다. 배포 후 CLI가 보여 준 주소에서 정적 파일과 서버 라우트를 열어 보세요.
플랫폼 포트로 요청 받기
PORT를 읽고 모든 네트워크 인터페이스에서 요청을 받도록 설정하세요. 예를 들면 다음과 같습니다.
import express from "express";
const app = express();
app.get("/", (_req, res) => res.send("Hello Nitroship"));
app.listen(Number(process.env.PORT || 3000), "0.0.0.0");{"scripts": {"start": "node server.js"}}NestJS에서는 await app.listen(Number(process.env.PORT || 3000), "0.0.0.0")를 사용합니다. Fastify는 listen에 { port: Number(process.env.PORT || 3000), host: "0.0.0.0" }를 넘깁니다. Hono는 Bun·Deno·엣지 전용 어댑터 대신 @hono/node-server를 사용해야 합니다.
알아둘 점
서버를 배포하려면 컴퓨트 리전을 정해야 합니다. 서버는 0.0.0.0:$PORT(기본 3000)에서 요청을 받아야 합니다. HTTP 요청과 서버가 내려 주는 자산은 Node 서버 하나가 모두 처리하며, Next.js처럼 라우트마다 함수를 따로 나누지는 않습니다.
마이그레이션·큐 워커·스케줄러는 자동으로 실행하지 않습니다. 마이그레이션은 CI나 로컬에서 실행하고, 정기 작업은 예약 작업을 참고하세요. 업로드 파일은 S3 같은 오브젝트 스토리지에 저장하고, 비밀 값은 환경 변수로 설정하세요.
지원하는 어댑터나 출력 구조와 다른 구성이 필요하면 직접 만든 Dockerfile을 사용하세요. 이때 build.framework 설정을 빼고 Dockerfile에서 설치·빌드·실행을 정의합니다.