From 5460082eade891f19030a63d97e2fae887a70459 Mon Sep 17 00:00:00 2001 From: Ema Park Date: Fri, 26 Sep 2025 19:50:31 -0400 Subject: [PATCH] Initial dockerfile, docker-compose. --- docker-compose.yml | 10 ++++++++++ dockerfile | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 docker-compose.yml create mode 100644 dockerfile diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a2c148f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: '3.9' + +services: + web: + build: . + image: sucker + ports: + - "3000:3000" + environment: + NODE_ENV: production diff --git a/dockerfile b/dockerfile new file mode 100644 index 0000000..9b027c1 --- /dev/null +++ b/dockerfile @@ -0,0 +1,34 @@ +FROM node:18-alpine AS base + +WORKDIR /app + +FROM base AS deps +COPY package.json package-lock.json* yarn.lock* pnpm-lock.yaml* ./ +RUN \ + if [ -f package-lock.json ]; then npm ci; \ + elif [ -f yarn.lock ]; then yarn install --frozen-lockfile; \ + elif [ -f pnpm-lock.yaml ]; then npm install -g pnpm && pnpm install --frozen-lockfile; \ + else echo "No lockfile found." && npm install; \ + fi + +FROM base AS builder +COPY --from=deps /app/node_modules ./node_modules +COPY . . +RUN npm run build + +FROM base AS runner +ENV NODE_ENV=production + +RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs + +WORKDIR /app + +COPY --from=builder /app/public ./public +COPY --from=builder /app/.next ./.next +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/package.json ./package.json + +USER nextjs + +EXPOSE 3000 +CMD ["npm", "start"]