diff --git a/templates/blank/Dockerfile b/templates/blank/Dockerfile index 93465cfa57a..12f8fb01d06 100644 --- a/templates/blank/Dockerfile +++ b/templates/blank/Dockerfile @@ -1,7 +1,6 @@ -# To use this Dockerfile, you have to set `output: 'standalone'` in your next.config.mjs file. # From https://github.com/vercel/next.js/blob/canary/examples/with-docker/Dockerfile -FROM node:22.12.0-alpine AS base +FROM node:18-alpine AS base # Install dependencies only when needed FROM base AS deps diff --git a/templates/with-postgres/src/migrations/20241221_130423_initial.json b/templates/with-postgres/src/migrations/20241228_171151_initial.json similarity index 99% rename from templates/with-postgres/src/migrations/20241221_130423_initial.json rename to templates/with-postgres/src/migrations/20241228_171151_initial.json index 61293bc26ed..c68a20e2a56 100644 --- a/templates/with-postgres/src/migrations/20241221_130423_initial.json +++ b/templates/with-postgres/src/migrations/20241228_171151_initial.json @@ -1,5 +1,5 @@ { - "id": "19f6f6b6-67a6-472f-9e30-e4972f21ca73", + "id": "4ec7c6c2-af96-4209-8397-5c42aa602ce6", "prevId": "00000000-0000-0000-0000-000000000000", "version": "7", "dialect": "postgresql", diff --git a/templates/with-postgres/src/migrations/20241221_130423_initial.ts b/templates/with-postgres/src/migrations/20241228_171151_initial.ts similarity index 100% rename from templates/with-postgres/src/migrations/20241221_130423_initial.ts rename to templates/with-postgres/src/migrations/20241228_171151_initial.ts diff --git a/templates/with-postgres/src/migrations/index.ts b/templates/with-postgres/src/migrations/index.ts index 719f0051d43..cdaf54716cf 100644 --- a/templates/with-postgres/src/migrations/index.ts +++ b/templates/with-postgres/src/migrations/index.ts @@ -1,9 +1,9 @@ -import * as migration_20241221_130423_initial from './20241221_130423_initial' +import * as migration_20241228_171151_initial from './20241228_171151_initial' export const migrations = [ { - up: migration_20241221_130423_initial.up, - down: migration_20241221_130423_initial.down, - name: '20241221_130423_initial', + up: migration_20241228_171151_initial.up, + down: migration_20241228_171151_initial.down, + name: '20241228_171151_initial', }, ] diff --git a/templates/with-vercel-postgres/src/migrations/20241221_130358_initial.json b/templates/with-vercel-postgres/src/migrations/20241228_171127_initial.json similarity index 99% rename from templates/with-vercel-postgres/src/migrations/20241221_130358_initial.json rename to templates/with-vercel-postgres/src/migrations/20241228_171127_initial.json index 3c67a7be32b..36878984b61 100644 --- a/templates/with-vercel-postgres/src/migrations/20241221_130358_initial.json +++ b/templates/with-vercel-postgres/src/migrations/20241228_171127_initial.json @@ -1,5 +1,5 @@ { - "id": "c68845d5-29d1-4e46-b258-29ef5f876fad", + "id": "2a2084da-02e5-4eee-b734-2ce43a857bbe", "prevId": "00000000-0000-0000-0000-000000000000", "version": "7", "dialect": "postgresql", diff --git a/templates/with-vercel-postgres/src/migrations/20241221_130358_initial.ts b/templates/with-vercel-postgres/src/migrations/20241228_171127_initial.ts similarity index 100% rename from templates/with-vercel-postgres/src/migrations/20241221_130358_initial.ts rename to templates/with-vercel-postgres/src/migrations/20241228_171127_initial.ts diff --git a/templates/with-vercel-postgres/src/migrations/index.ts b/templates/with-vercel-postgres/src/migrations/index.ts index 92e992d20a9..93e9c9bf54f 100644 --- a/templates/with-vercel-postgres/src/migrations/index.ts +++ b/templates/with-vercel-postgres/src/migrations/index.ts @@ -1,9 +1,9 @@ -import * as migration_20241221_130358_initial from './20241221_130358_initial' +import * as migration_20241228_171127_initial from './20241228_171127_initial' export const migrations = [ { - up: migration_20241221_130358_initial.up, - down: migration_20241221_130358_initial.down, - name: '20241221_130358_initial', + up: migration_20241228_171127_initial.up, + down: migration_20241228_171127_initial.down, + name: '20241228_171127_initial', }, ] diff --git a/templates/with-vercel-website/Dockerfile b/templates/with-vercel-website/Dockerfile index e7a5ead45e9..d2a860566c3 100644 --- a/templates/with-vercel-website/Dockerfile +++ b/templates/with-vercel-website/Dockerfile @@ -1,24 +1,71 @@ -FROM node:18.8-alpine as base +# To use this Dockerfile, you have to set `output: 'standalone'` in your next.config.js file. +# From https://github.com/vercel/next.js/blob/canary/examples/with-docker/Dockerfile -FROM base as builder +FROM node:22.12.0-alpine AS base -WORKDIR /home/node/app -COPY package*.json ./ +# Install dependencies only when needed +FROM base AS deps +# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. +RUN apk add --no-cache libc6-compat +WORKDIR /app +# Install dependencies based on the preferred package manager +COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./ +RUN \ + if [ -f yarn.lock ]; then yarn --frozen-lockfile; \ + elif [ -f package-lock.json ]; then npm ci; \ + elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --frozen-lockfile; \ + else echo "Lockfile not found." && exit 1; \ + fi + + +# Rebuild the source code only when needed +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules COPY . . -RUN yarn install -RUN yarn build -FROM base as runtime +# 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 \ + if [ -f yarn.lock ]; then yarn run build; \ + elif [ -f package-lock.json ]; then npm run build; \ + elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm run build; \ + else echo "Lockfile not found." && exit 1; \ + fi + +# Production image, copy all the files and run next +FROM base AS runner +WORKDIR /app -ENV NODE_ENV=production +ENV NODE_ENV production +# Uncomment the following line in case you want to disable telemetry during runtime. +# ENV NEXT_TELEMETRY_DISABLED 1 -WORKDIR /home/node/app -COPY package*.json ./ -COPY yarn.lock ./ +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs -RUN yarn install --production +# 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 + +# 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 EXPOSE 3000 -CMD ["node", "dist/server.js"] +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 +CMD HOSTNAME="0.0.0.0" node server.js diff --git a/templates/with-vercel-website/src/migrations/20241221_130412_initial.json b/templates/with-vercel-website/src/migrations/20241228_171140_initial.json similarity index 99% rename from templates/with-vercel-website/src/migrations/20241221_130412_initial.json rename to templates/with-vercel-website/src/migrations/20241228_171140_initial.json index 2c17953e896..36b1bca768c 100644 --- a/templates/with-vercel-website/src/migrations/20241221_130412_initial.json +++ b/templates/with-vercel-website/src/migrations/20241228_171140_initial.json @@ -1,5 +1,5 @@ { - "id": "df629ce9-ae70-414d-80f2-33997f6e2938", + "id": "e4f23293-61c9-4a40-ab14-6aa981547ada", "prevId": "00000000-0000-0000-0000-000000000000", "version": "7", "dialect": "postgresql", diff --git a/templates/with-vercel-website/src/migrations/20241221_130412_initial.ts b/templates/with-vercel-website/src/migrations/20241228_171140_initial.ts similarity index 100% rename from templates/with-vercel-website/src/migrations/20241221_130412_initial.ts rename to templates/with-vercel-website/src/migrations/20241228_171140_initial.ts diff --git a/templates/with-vercel-website/src/migrations/index.ts b/templates/with-vercel-website/src/migrations/index.ts index e804a76f514..d09504ba482 100644 --- a/templates/with-vercel-website/src/migrations/index.ts +++ b/templates/with-vercel-website/src/migrations/index.ts @@ -1,9 +1,9 @@ -import * as migration_20241221_130412_initial from './20241221_130412_initial' +import * as migration_20241228_171140_initial from './20241228_171140_initial' export const migrations = [ { - up: migration_20241221_130412_initial.up, - down: migration_20241221_130412_initial.down, - name: '20241221_130412_initial', + up: migration_20241228_171140_initial.up, + down: migration_20241228_171140_initial.down, + name: '20241228_171140_initial', }, ]