diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b565c64 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,45 @@ +## INIT STEP +# Install dependencies only when needed +FROM node:18-alpine AS deps + +RUN apk add --no-cache libc6-compat +WORKDIR /app + +# Copy the files needed to install deps +COPY package.json yarn.lock ./ +RUN yarn install --frozen-lockfile + +## BUILD STEP +# Rebuild the source code only when needed +FROM node:18-alpine AS builder + +WORKDIR /app + +# Copy node_modules installed by the deps step +COPY --from=deps /app/node_modules ./node_modules + +COPY . . + +RUN yarn build + +## RUN STEP +FROM node:18-alpine AS runner + +LABEL author="neshura@proton.me" +WORKDIR /app + +ENV NODE_ENV production + +COPY --from=builder /app/public ./public +COPY --from=builder /app/node_modules ./node_modules + +# Automatically leverage output traces to reduce image size +# https://nextjs.org/docs/advanced-features/output-file-tracing +COPY --from=builder /app/.next/standalone ./ +COPY --from=builder /app/.next/static ./.next/static + +# expose port 3000 +ENV PORT 3000 +EXPOSE 3000 + +CMD [ "yarn", "start" ] \ No newline at end of file