diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..3ac387a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +.env.local +.git +.next +.planning +node_modules +tsconfig.tsbuildinfo diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..81e84a4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,38 @@ +FROM node:22-bookworm-slim AS base + +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" + +RUN corepack enable + +WORKDIR /app + +FROM base AS deps + +COPY package.json pnpm-lock.yaml ./ +RUN pnpm install --frozen-lockfile + +FROM base AS builder + +COPY --from=deps /app/node_modules ./node_modules +COPY . . + +RUN pnpm prisma generate && pnpm build + +FROM node:22-bookworm-slim AS runner + +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +ENV NODE_ENV="production" +ENV HOSTNAME="0.0.0.0" +ENV PORT="3000" + +RUN corepack enable + +WORKDIR /app + +COPY --from=builder /app ./ + +EXPOSE 3000 + +CMD ["pnpm", "exec", "next", "start", "--hostname", "0.0.0.0", "--port", "3000"]