|
| 1 | +# FROM node:22-alpine AS base |
| 2 | + |
| 3 | +# # 빌드 시 환경 변수 설정 |
| 4 | +# ARG VITE_SUPABASE_SERVICE_KEY |
| 5 | +# ARG VITE_KAKAOMAP_KEY |
| 6 | +# ARG VITE_VISITJEJU_KEY |
| 7 | +# ARG VITE_VISIT_JEJU_BASE_URL |
| 8 | +# ARG VITE_API_BASE_URL |
| 9 | +# ARG VITE_SUPABASE_BASE_URL |
| 10 | + |
| 11 | +# # 런타임에서 사용 가능하도록 ENV 설정 |
| 12 | +# ENV VITE_SUPABASE_SERVICE_KEY=$VITE_SUPABASE_SERVICE_KEY |
| 13 | +# ENV VITE_KAKAOMAP_KEY=$VITE_KAKAOMAP_KEY |
| 14 | +# ENV VITE_VISITJEJU_KEY=$VITE_VISITJEJU_KEY |
| 15 | +# ENV VITE_VISIT_JEJU_BASE_URL=$VITE_VISIT_JEJU_BASE_URL |
| 16 | +# ENV VITE_API_BASE_URL=$VITE_API_BASE_URL |
| 17 | +# ENV VITE_SUPABASE_BASE_URL=$VITE_SUPABASE_BASE_URL |
| 18 | + |
| 19 | +# # 종속성 설치를 위한 이미지 (의존성 캐싱 가능) |
| 20 | +# FROM base AS deps |
| 21 | +# RUN apk add --no-cache libc6-compat |
| 22 | +# WORKDIR /app |
| 23 | + |
| 24 | +# # package.json & yarn.lock 복사 후 종속성 설치 |
| 25 | +# COPY package.json yarn.lock ./ |
| 26 | +# RUN yarn install --frozen-lockfile |
| 27 | + |
| 28 | +# # 빌드 전용 이미지 |
| 29 | +# FROM base AS builder |
| 30 | +# WORKDIR /app |
| 31 | + |
| 32 | +# # deps 단계에서 설치된 node_modules 사용 |
| 33 | +# COPY --from=deps /app/node_modules ./node_modules |
| 34 | +# COPY . . |
| 35 | + |
| 36 | +# # Vite 빌드 실행 |
| 37 | +# RUN yarn build |
| 38 | + |
| 39 | +# # 최종 프로덕션 이미지 (가벼운 실행 환경) |
| 40 | +# FROM base AS runner |
| 41 | +# WORKDIR /app |
| 42 | + |
| 43 | +# # 프로덕션 모드 설정 |
| 44 | +# ENV NODE_ENV=production |
| 45 | + |
| 46 | +# # 실행할 빌드된 파일만 복사 |
| 47 | +# COPY --from=builder /app/dist ./dist |
| 48 | +# COPY --from=builder /app/node_modules ./node_modules |
| 49 | +# COPY --from=builder /app/package.json ./ |
| 50 | + |
| 51 | +# # 사용자 생성 및 권한 설정 (보안 강화) |
| 52 | +# RUN addgroup --system --gid 1001 nodejs |
| 53 | +# RUN adduser --system --uid 1001 react |
| 54 | +# USER react |
| 55 | + |
| 56 | +# # 포트 설정 |
| 57 | +# EXPOSE 3000 |
| 58 | +# ENV PORT=3000 |
| 59 | +# ENV HOSTNAME="0.0.0.0" |
| 60 | + |
| 61 | +# # Vite 프론트엔드 서버 실행 |
| 62 | +# CMD ["yarn", "preview", "--host"] |
| 63 | + |
1 | 64 | FROM node:22-alpine AS base |
2 | 65 |
|
3 | | -# 빌드 시 환경 변수 설정 |
| 66 | +# Define arguments for environment variables |
4 | 67 | ARG VITE_SUPABASE_SERVICE_KEY |
5 | 68 | ARG VITE_KAKAOMAP_KEY |
6 | 69 | ARG VITE_VISITJEJU_KEY |
7 | 70 | ARG VITE_VISIT_JEJU_BASE_URL |
8 | 71 | ARG VITE_API_BASE_URL |
9 | 72 | ARG VITE_SUPABASE_BASE_URL |
10 | 73 |
|
11 | | -# 런타임에서 사용 가능하도록 ENV 설정 |
| 74 | +WORKDIR /app |
| 75 | +COPY package.json yarn.lock ./ |
| 76 | +RUN yarn install --frozen-lockfile |
| 77 | + |
| 78 | +# Copy source code and set environment variables |
| 79 | +COPY . . |
12 | 80 | ENV VITE_SUPABASE_SERVICE_KEY=$VITE_SUPABASE_SERVICE_KEY |
13 | 81 | ENV VITE_KAKAOMAP_KEY=$VITE_KAKAOMAP_KEY |
14 | 82 | ENV VITE_VISITJEJU_KEY=$VITE_VISITJEJU_KEY |
15 | 83 | ENV VITE_VISIT_JEJU_BASE_URL=$VITE_VISIT_JEJU_BASE_URL |
16 | 84 | ENV VITE_API_BASE_URL=$VITE_API_BASE_URL |
17 | 85 | ENV VITE_SUPABASE_BASE_URL=$VITE_SUPABASE_BASE_URL |
| 86 | +ENV NODE_ENV=production |
18 | 87 |
|
19 | | -# 종속성 설치를 위한 이미지 (의존성 캐싱 가능) |
20 | | -FROM base AS deps |
21 | | -RUN apk add --no-cache libc6-compat |
22 | | -WORKDIR /app |
23 | | - |
24 | | -# package.json & yarn.lock 복사 후 종속성 설치 |
25 | | -COPY package.json yarn.lock ./ |
26 | | -RUN yarn install --frozen-lockfile |
27 | | - |
28 | | -# 빌드 전용 이미지 |
29 | | -FROM base AS builder |
30 | | -WORKDIR /app |
31 | | - |
32 | | -# deps 단계에서 설치된 node_modules 사용 |
33 | | -COPY --from=deps /app/node_modules ./node_modules |
34 | | -COPY . . |
35 | | - |
36 | | -# Vite 빌드 실행 |
| 88 | +# Build the Vite application |
37 | 89 | RUN yarn build |
38 | 90 |
|
39 | | -# 최종 프로덕션 이미지 (가벼운 실행 환경) |
40 | | -FROM base AS runner |
41 | | -WORKDIR /app |
42 | | - |
43 | | -# 프로덕션 모드 설정 |
44 | | -ENV NODE_ENV=production |
45 | | - |
46 | | -# 실행할 빌드된 파일만 복사 |
47 | | -COPY --from=builder /app/dist ./dist |
48 | | -COPY --from=builder /app/node_modules ./node_modules |
49 | | -COPY --from=builder /app/package.json ./ |
| 91 | +# Nginx server to serve static files |
| 92 | +FROM nginx:stable-alpine AS runner |
50 | 93 |
|
51 | | -# 사용자 생성 및 권한 설정 (보안 강화) |
52 | | -RUN addgroup --system --gid 1001 nodejs |
53 | | -RUN adduser --system --uid 1001 react |
54 | | -USER react |
| 94 | +COPY nginx/nginx.conf /etc/nginx/nginx.conf |
| 95 | +COPY --from=base /app/dist /usr/share/nginx/html/page |
55 | 96 |
|
56 | | -# 포트 설정 |
57 | 97 | EXPOSE 3000 |
58 | | -ENV PORT=3000 |
59 | | -ENV HOSTNAME="0.0.0.0" |
60 | 98 |
|
61 | | -# Vite 프론트엔드 서버 실행 |
62 | | -CMD ["yarn", "preview", "--host"] |
| 99 | +CMD ["nginx", "-g", "daemon off;"] |
0 commit comments