- 게시됨
Bun과 Docker를 사용하여 독립 실행형 Next.js 애플리케이션 배포하기 위한 완벽한 가이드
- 작성자
- 이름
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
Bun과 Docker를 사용하여 Next.js 배포하는 방법
Bun이 안정적인 버전 1을 출시하고 Vercel이 패키지 관리자로 Bun을 지원하기 시작했을 때 (런타임은 여전히 Node를 사용하지만), 저는 흥미를 느꼈습니다. Vercel 배포 프로세스를 로컬에서 어떻게 시뮬레이션할 수 있을까요? 특히 Bun과 Docker를 사용하여 Next.js 독립 실행형 앱을 어떻게 배포할 수 있을까요? 이 가이드에서는 이러한 질문에 대한 답변을 제공합니다.
사전 요구 사항
- Docker, Next.js 및 Bun에 대한 기본적인 이해
- Node.js 설치
- Bun 패키지 관리자 설치
단계별 가이드
1단계: Dockerfile 설정
다음은 필요한 전체 dockerfile
입니다.
FROM imbios/bun-node:18-slim AS deps
ARG DEBIAN_FRONTEND=noninteractive
# 저는 Asia/Jakarta를 시간대를 사용합니다. 필요에 따라 시간대를 변경할 수 있습니다.
RUN apt-get -y update && \
apt-get install -yq openssl git ca-certificates tzdata && \
ln -fs /usr/share/zoneinfo/Asia/Jakarta /etc/localtime && \
dpkg-reconfigure -f noninteractive tzdata
WORKDIR /app
# 선호하는 패키지 관리자를 기반으로 종속성을 설치합니다.
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile
# 앱 빌드
FROM deps AS builder
WORKDIR /app
COPY . .
RUN bun run build
# 프로덕션 이미지, 모든 파일을 복사하고 Next 실행
FROM node:18-slim AS runner
WORKDIR /app
ARG CONFIG_FILE
COPY $CONFIG_FILE /app/.env
ENV NODE_ENV production
# 런타임 중에 원격 분석을 비활성화하려면 다음 줄의 주석을 해제하십시오.
# ENV NEXT_TELEMETRY_DISABLED 1
COPY /app/.next/standalone ./
EXPOSE 3001
ENV PORT 3001
CMD ["node", "server.js"]
2단계: 사용자 지정 셸 스크립트
사용자 지정 셸 스크립트 ./build.sh를 만듭니다.
#!/bin/bash
set -e
# 전달된 인수를 사용하여 Next.js 빌드 실행
next build "$@"
# CI 환경이 아닌 경우에만 파일 복사
if [ -z "$CI" ]; then
cp -r ./public ./.next/standalone/public
cp -r ./.next/static ./.next/standalone/.next/static
fi
일반적인 오류 및 문제 해결
처음 시도하는 동안 특히 node:로 시작하는 오류가 발생했습니다. oven/bun
대신 imbios/bun-node
를 기본 이미지로 사용하여 이러한 오류를 해결했습니다. Bun에서 아직 구현되지 않은 기능에 대한 Node.js 폴백이 필요하기 때문입니다.
결론
이 가이드를 따르면 Bun과 Docker를 사용하여 Vercel 배포 프로세스를 모방하여 Next.js 앱을 배포할 수 있습니다. 프로젝트 요구 사항에 따라 설정을 조정하고 최적화할 수 있습니다.
다음 단계
이 가이드가 유용했다면 공유하고 궁금한 점이나 개선 사항이 있으면 댓글을 남겨주세요. 더 많은 내용을 기대해 주세요!