From c2f499037b012cf9d5e3e528e2264cd6ac31e104 Mon Sep 17 00:00:00 2001 From: Hyoseong Jo Date: Mon, 5 Jan 2026 02:10:49 +0900 Subject: [PATCH] =?UTF-8?q?1=E3=85=8A=E3=85=8F=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dockerignore | 10 ++++++++++ .env.prod | 12 ++++++++++++ Dockerfile | 46 ++++++++++++++++++++++++++++++++++++++++++++++ README.md | 2 +- 4 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 .env.prod create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..70e0f38 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +node_modules +.nuxt +.output +.git +.gitignore +.idea +*.log +.env.local +.env.*.local +README.md diff --git a/.env.prod b/.env.prod new file mode 100644 index 0000000..4b3208a --- /dev/null +++ b/.env.prod @@ -0,0 +1,12 @@ +# Database (운영 환경) +DB_HOST=172.25.0.79 +DB_PORT=5433 +DB_NAME=weeklyreport +DB_USER=weeklyreport +DB_PASSWORD=weeklyreport2026 + +# App +SESSION_SECRET=weeklyreport-prod-secret-2026 + +# OpenAI +OPENAI_API_KEY=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 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..151ce67 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,46 @@ +# =========================================== +# Weekly Report - Production Dockerfile +# =========================================== + +FROM node:22-alpine AS builder +WORKDIR /app +COPY package*.json ./ +RUN npm ci +COPY . . +# 운영 환경변수로 빌드 +COPY .env.prod .env +RUN npm run build + +FROM node:22-alpine +WORKDIR /app + +# 타임존 설정 +RUN apk add --no-cache tzdata \ + && cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime \ + && echo "Asia/Seoul" > /etc/timezone \ + && apk del tzdata + +ENV NODE_ENV=production +ENV HOST=0.0.0.0 +ENV PORT=2026 + +# 빌드 결과물 복사 +COPY --from=builder /app/.output /app/.output + +# 런타임 의존성 설치 (pg, openai 등) +COPY --from=builder /app/package*.json /app/ +RUN npm ci --omit=dev + +# 운영 환경변수 복사 +COPY .env.prod /app/.env + +# 비root 사용자 +RUN addgroup -g 1001 -S nodejs \ + && adduser -S nuxt -u 1001 -G nodejs \ + && chown -R nuxt:nodejs /app + +USER nuxt +EXPOSE 2026 + +# .env 로드 후 실행 +CMD ["sh", "-c", "export $(grep -v '^#' .env | xargs) && node .output/server/index.mjs"] diff --git a/README.md b/README.md index a5c319b..a846327 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ npm install ### 개발 서버 실행 ```bash npm run dev -# http://localhost:3000 +# http://localhost:2026 ``` ### 프로덕션 빌드