본문으로 바로가기
제품데스크톱 도구TASTECAD도면 확인TASTEFILES파일 관리TASTEFTP파일 전송TASTESSH원격 작업공간TASTEZIP압축과 해제개발 도구TASTECODERust 통합 개발 환경TASTESTUDIO통합 개발·테스트 환경TASTEETL데이터 통합(ETL)서버TASTEREMOTE원격 데스크톱 서버TASTEGEO공간정보 서버TASTEMAIL메일 작업공간시작하기다운로드문서구매모든 제품
마켓플레이스
소식
개발소식오늘의 개발 소식개발 문서프로그래밍 언어RustTypeScriptJavaScriptPythonGoC#JavaCC++KotlinDart프런트엔드 프레임워크Next.jsReactVue.js · NuxtSvelteKitAngular서버 프레임워크Spring BootDjangoFastAPIASP.NET CoreNestJS · Express앱 · 데스크톱 프레임워크TauriFlutterReact NativeElectron알고리즘알고리즘 기초알고리즘 핵심알고리즘 심화실무 알고리즘
커뮤니티프로젝트개발 로그프롬프트AI 도구 이슈쇼케이스커뮤니티 안내
협업기술 전수홈페이지 구축데스크톱 앱 구축릴리스·결제 파이프라인판매 파트너문의
서비스원격 데스크톱설치 패키지 커스텀
TASTEDEV
제품

데스크톱 도구

TASTECAD복잡한 도면을 가볍게 열다TASTEFILES필요한 파일만, 가장 빠르게TASTEFTP파일이 오가는 가장 단정한 길TASTESSH서버와 나 사이, 더 단단한 연결TASTEZIP더 빠르게 묶고, 더 안전하게 풀다

개발 도구

TASTECODERust 앱을 편집 · 빌드 · 디버깅 · 테스트까지 한 창에서TASTESTUDIO편집부터 원격 테스트와 승인 기반 AI 수정까지TASTEETL값을 보며 데이터를 옮깁니다

서버

TASTEREMOTE우리 회사 서버로 운영하는 원격 데스크톱TASTEGEOGeoServer 호환 공간정보 서버를 Rust로 다시 세웁니다TASTEMAIL메일의 주도권을 다시 내 손에

시작하기

다운로드모든 제품 최신 판문서제품 사용법구매구독 · 영구 라이선스모든 제품모든 제품 한눈에
모든 제품
마켓플레이스소식
개발

소식

오늘의 개발 소식언어 · 프레임워크 · GitHub · AI 공식 발표개발 문서언어 · 프레임워크 · 알고리즘 안내서

프로그래밍 언어

RustTypeScriptJavaScriptPythonGoC#JavaCC++KotlinDart

프레임워크

프런트엔드 프레임워크Next.jsReactVue.js · NuxtSvelteKitAngular
서버 프레임워크Spring BootDjangoFastAPIASP.NET CoreNestJS · Express
앱 · 데스크톱 프레임워크TauriFlutterReact NativeElectron

알고리즘

알고리즘 기초복잡도 분석 · 정렬 · 탐색 · 기본 자료구조 · 트리와 힙알고리즘 핵심그래프 탐색 · 최단 경로와 최소 신장 트리 · 동적 계획법 · 탐욕 알고리즘 · 분할 정복 · 백트래킹알고리즘 심화문자열 알고리즘 · 수학과 정수론 · 비트 연산 · 구간 트리 · 유니온 파인드실무 알고리즘코딩 면접 풀이 전략 · LRU 캐시 · 레이트 리미터 · 일관된 해시
개발 문서 전체 보기
커뮤니티
프로젝트빌더와 작업 발견개발 로그결정과 시행착오프롬프트재사용 가능한 지시AI 도구 이슈Claude · Codex · Gemini 문제와 우회법쇼케이스완성된 결과커뮤니티 안내공개하고 함께 만드는 방식
협업
기술 전수Rust·egui 네이티브 앱 만들기홈페이지 구축10개 언어, 계정, 문서·다운로드데스크톱 앱 구축Rust·egui, WebView 없이릴리스·결제 파이프라인서명 · MSI·deb·rpm·AppImage · 해시판매 파트너소개하고 결제액의 30% 받기문의구축 · 제휴 · 투자 문의
서비스
원격 데스크톱브라우저로 내 컴퓨터에 접속설치 패키지 커스텀필요한 기능만, 설정은 미리
구매
KO
한국어EnglishDeutschEspañolFrançaisItalianoPortuguês (Brasil)日本語简体中文繁體中文
로그인
로그인
TASTEDEV

작은 도구부터, 더 좋은 개발까지.

support@tastedev.netTASTEDEV 후원하기
제품제품군구매문서다운로드마켓플레이스고객 지원
커뮤니티프로젝트개발 로그프롬프트AI 도구 이슈쇼케이스
정책개인정보처리방침이용약관구독 약관환불 정책커뮤니티 운영 정책
계정로그인가입하기
방문자
오늘
012345678901234567890123456789012345678901234567890123456789
어제
012345678901234567890123456789012345678901234567890123456789
누적 조회
0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
상호
지엑스소프트
대표자
최영구
사업자등록번호
853-44-00368
주소
인천광역시 미추홀구 경인로 351 9층 V24
전화
+82-10-4404-1523
이메일
whitecalvin@tastedev.net
개인정보 보호책임자
최영구

© 2026 TASTEDEV제품 정보는 현재 검증된 개발 소스를 기준으로 합니다.출시·고도화 중

Next.js 문서
Next.js
Next.js 시작하기프로젝트 구조핵심 개념데이터와 상태테스트배포
토론

Next.js 안내서 · 6/6

배포

Next.js 애플리케이션은 Node.js 서버로 실행하거나, Docker 컨테이너로 묶거나, 정적 파일로 내보내거나, 각 플랫폼이 제공하는 통합 기능으로 배포할 수 있습니다. 어떤 방식을 고르느냐에 따라 쓸 수 있는 기능이 달라지므로, 먼저 운영용 빌드가 무엇을 만드는지 이해하는 것이 중요합니다.

운영용 빌드와 실행

next build는 코드를 최적화해 .next 폴더에 운영용 결과를 만들고, 정적으로 렌더링할 수 있는 페이지를 미리 생성합니다. 빌드가 끝나면 각 라우트가 정적으로 미리 만들어졌는지, 요청마다 서버에서 렌더링되는지 기호와 함께 목록으로 보여 주므로, 의도와 다르게 동적으로 바뀐 페이지가 없는지 확인합니다.

npm run build      # next build
npm run start      # next start, 기본 포트 3000

# 포트를 바꿔 실행
npx next start -p 8080

next start로 실행하는 Node.js 서버는 Server Component, Server Action, Route Handler, 이미지 최적화, 재검증 등 모든 기능을 지원합니다. 서버 한 대에 배포한다면 이 서버를 pm2나 systemd 같은 프로세스 관리자로 실행하고, 앞에 Nginx 같은 리버스 프록시를 두어 HTTPS와 압축을 맡기는 구성이 흔합니다.

standalone 출력

node_modules 전체를 서버에 올리지 않으려면 output: "standalone"을 설정합니다. 빌드할 때 실행에 꼭 필요한 파일만 추적해 .next/standalone 폴더에 모으고, next start 대신 쓸 수 있는 작은 server.js를 만들어 줍니다.

// next.config.ts
import type { NextConfig } from "next";

const nextConfig: NextConfig = {
  output: "standalone",
};

export default nextConfig;

이 서버는 public과 .next/static 폴더를 자동으로 복사하지 않습니다. CDN에서 제공하지 않는다면 직접 복사한 뒤 실행합니다. 포트와 수신 주소는 PORT, HOSTNAME 환경 변수로 정합니다.

cp -r public .next/standalone/
cp -r .next/static .next/standalone/.next/
PORT=8080 HOSTNAME=0.0.0.0 node .next/standalone/server.js

Docker로 배포하기

standalone 출력은 작은 Docker 이미지를 만들 때 특히 유용합니다. 의존성 설치, 빌드, 실행 단계를 나눈 다단계 빌드로 최종 이미지에는 실행에 필요한 파일만 남깁니다.

FROM node:lts-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci

FROM node:lts-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build

FROM node:lts-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV PORT=3000
ENV HOSTNAME=0.0.0.0
COPY --from=builder /app/public ./public
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
EXPOSE 3000
CMD ["node", "server.js"]

컨테이너를 여러 개 띄울 때는 캐시와 재검증 결과를 인스턴스끼리 공유해야 할 수 있습니다. 공식 자체 호스팅(self-hosting) 안내서의 캐시 핸들러 설정을 참고합니다.

정적 내보내기

서버 없이 HTML · CSS · 자바스크립트 파일만으로 운영하려면 output: "export"를 설정합니다. next build가 out 폴더에 정적 파일을 만들며, Nginx, Apache, 객체 저장소, GitHub Pages 같은 곳에 그대로 올릴 수 있습니다.

// next.config.ts
const nextConfig = {
  output: "export",
  trailingSlash: true,
};

export default nextConfig;

다만 요청 시점에 서버가 필요한 기능은 쓸 수 없습니다. 쿠키를 읽는 동적 렌더링, Server Action, 요청마다 응답을 만드는 Route Handler, 재검증, 기본 이미지 최적화 등이 제한되므로, 이런 기능이 필요하면 Node.js 서버나 플랫폼 배포를 고릅니다.

플랫폼에 배포하기

Next.js를 만든 Vercel은 별도 설정 없이 Git 저장소를 연결해 배포할 수 있습니다. 그 밖의 플랫폼은 Next.js의 배포 어댑터나 각 업체가 제공하는 통합 기능으로 지원하며, 지원 범위가 플랫폼마다 다르므로 각 업체의 Next.js 문서를 확인합니다.

환경 변수와 점검 목록

  • NEXT_PUBLIC_으로 시작하는 변수는 빌드할 때 브라우저 코드에 값이 박힙니다. 값을 바꾸면 다시 빌드해야 합니다.
  • 서버 전용 변수는 실행 시점에 읽히므로 서버나 컨테이너 환경에서 주입합니다.
  • 운영 전에 next build 결과의 정적 · 동적 표시, 이미지 최적화, 메타데이터, 오류 화면(error.tsx, not-found.tsx)을 점검합니다.
  • 공식 문서의 운영 점검 목록(Production Checklist)으로 성능, 보안, 접근성을 한 번 더 확인합니다.

정리

  • next build로 빌드하고 next start로 실행하면 모든 기능을 쓸 수 있습니다.
  • output: "standalone"은 필요한 파일만 모아 Docker 이미지를 작게 만듭니다.
  • output: "export"는 정적 호스팅이 가능하지만 서버 기능을 쓸 수 없습니다.
  • 플랫폼 배포는 지원 범위를 확인하고, NEXT_PUBLIC_ 변수는 빌드 시점에 고정된다는 점을 기억합니다.

공식 문서

  • Next.js 문서
  • Deploying
  • Self-Hosting
  • Static Exports
  • Production Checklist
  • next.config.js output
이 장에 대해 질문이 있나요?
이전 장테스트

댓글 0개

인기 댓글순최신순

로그인 · 로그인하면 댓글을 남길 수 있습니다.