Bun — A fast all-in-one JavaScript runtime
Bundle, install, and run JavaScript & TypeScript — all in Bun. Bun is a new JavaScript runtime with a native bundler, transpiler, task runner, and npm client built-in.

bun을 이용하여, 기존 npm, yarn 대비 빠른 패키지 설치 및 빌드를 통해 배포를 하기 위한 메모이다.

FROM oven/bun:1 as builder

WORKDIR /app

COPY package*.json ./
RUN bun install

COPY . .
RUN bun run build

FROM nginx:stable-alpine
RUN rm -rf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/nginx/default.conf /etc/nginx/conf.d/default.conf

RUN rm -rf /usr/share/nginx/html/*
COPY --from=builder /app/dist /usr/share/nginx/html

EXPOSE 80
ENTRYPOINT ["nginx", "-g", "daemon off;"]

Dockerfile

server {
  listen 80;
  location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
  }
}

./nginx/default.conf

version: "3"
services:
  nw-frontend:
    container_name: nw-frontend
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "80:80"

docker-compose.yml