diff --git a/Dockerfile b/Dockerfile index 80112a7..e8eca32 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,53 +20,24 @@ RUN \ bun install --frozen-lockfile; \ rm -f .npmrc +# Copy package files and install dependencies with Bun +COPY package.json bun.lockb ./ +RUN bun install --frozen-lockfile -# Rebuild the source code only when needed -FROM base AS builder -WORKDIR /app -COPY --from=deps /app/node_modules ./node_modules +# Copy the rest of the app source and build it COPY . . - -# Next.js collects completely anonymous telemetry data about general usage. -# Learn more here: https://nextjs.org/telemetry -# Uncomment the following line in case you want to disable telemetry during the build. -# ENV NEXT_TELEMETRY_DISABLED 1 - RUN bun run build -# Production image, copy all the files and run next -FROM base AS runner +# Stage 2: The Runner (using Node) +FROM node:20-alpine as runner WORKDIR /app -ENV NODE_ENV production -# Uncomment the following line in case you want to disable telemetry during runtime. -# ENV NEXT_TELEMETRY_DISABLED 1 - -RUN addgroup --system --gid 1001 nodejs -RUN adduser --system --uid 1001 nextjs - -# Remove this line if you do not have this folder -COPY --from=builder /app/public ./public - -# Set the correct permission for prerender cache -RUN mkdir .next -RUN chown nextjs:nodejs .next - -# Give total ownership of the application to the nextjs system account -RUN chown -R nextjs:nodejs /app/ - -# Automatically leverage output traces to reduce image size -# https://nextjs.org/docs/advanced-features/output-file-tracing -COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ -COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static - -USER nextjs +# Only copy what's necessary for production from the builder stage +COPY --from=base /app/.next ./.next +COPY --from=base /app/node_modules ./node_modules +COPY --from=base /app/package.json ./package.json +COPY --from=base /app/public ./public +# Expose port and define command to run the app with Node EXPOSE 3000 - -ENV PORT 3000 - -# server.js is created by next build from the standalone output -# https://nextjs.org/docs/pages/api-reference/next-config-js/output -ENV HOSTNAME=0.0.0.0 -CMD ["node", "server.js"] +CMD ["node_modules/.bin/next", "start"] \ No newline at end of file