diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile index 9c00d58291..721ba63a53 100644 --- a/apps/web/Dockerfile +++ b/apps/web/Dockerfile @@ -1,13 +1,36 @@ -FROM node:18.16-alpine AS installer +FROM node:18-alpine AS installer RUN corepack enable && corepack prepare pnpm@latest --activate WORKDIR /app COPY . . +# Copy .env file because Docker don't follow symlinks +COPY .env /app/apps/web/ RUN pnpm install + # Build the project RUN pnpm dlx prisma generate RUN pnpm turbo run build --filter=web... -CMD pnpm dlx prisma migrate deploy && node /app/apps/web/.next/standalone/apps/web/server.js \ No newline at end of file +FROM node:18-alpine AS runner +RUN corepack enable && corepack prepare pnpm@latest --activate + +# Don't run production as root +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs +USER nextjs + +WORKDIR /home/nextjs + +COPY --from=installer /app/apps/web/next.config.js . +COPY --from=installer /app/apps/web/package.json . + +# Automatically leverage output traces to reduce image size +# https://nextjs.org/docs/advanced-features/output-file-tracing +COPY --from=installer --chown=nextjs:nodejs /app/apps/web/.next/standalone ./ +COPY --from=installer --chown=nextjs:nodejs /app/apps/web/.next/static ./apps/web/.next/static +COPY --from=installer --chown=nextjs:nodejs /app/apps/web/public ./apps/web/public +COPY --from=installer --chown=nextjs:nodejs /app/packages/database/prisma ./packages/database/prisma + +CMD pnpm dlx prisma migrate deploy && node apps/web/server.js \ No newline at end of file