build: docker config

This commit is contained in:
JOYCEQL
2025-02-11 14:28:36 +08:00
committed by qingchen
parent 4deb61b074
commit a3c54cc8cb
8 changed files with 4173 additions and 3311 deletions
+11
View File
@@ -0,0 +1,11 @@
Dockerfile
.dockerignore
node_modules
npm-debug.log
README.md
.next
.git
.env.local
.env.development.local
.env.test.local
.env.production.local
+2
View File
@@ -37,3 +37,5 @@ next-env.d.ts
# idea
.idea
.history
+58
View File
@@ -0,0 +1,58 @@
# syntax=docker.io/docker/dockerfile:1
FROM node:20-alpine AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN npm install -g corepack@latest && corepack enable
WORKDIR /app
# Install dependencies only when needed
FROM base AS deps
COPY package.json pnpm-lock.yaml* ./
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile --force
# Rebuild the source code only when needed
FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
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 pnpm run build
# Production image, copy all the files and run next
FROM base 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
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
ENV PORT 3000
# set hostname to localhost
ENV HOSTNAME "0.0.0.0"
CMD ["node", "server.js"]
+11
View File
@@ -0,0 +1,11 @@
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- "3000:3000"
environment:
- NODE_ENV=production
restart: always
+3
View File
@@ -1,4 +1,6 @@
import createNextIntlPlugin from "next-intl/plugin";
import path from "path";
import { fileURLToPath } from "url";
const withNextIntl = createNextIntlPlugin();
@@ -7,6 +9,7 @@ const config = {
typescript: {
ignoreBuildErrors: true,
},
output: "standalone",
async rewrites() {
return [
{
+1
View File
@@ -2,6 +2,7 @@
"name": "magic-resume",
"version": "1.0.0",
"private": true,
"packageManager": "pnpm@10.3.0",
"scripts": {
"dev": "next dev",
"build": "next build",
+4085 -3309
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -18,7 +18,7 @@
}
],
"paths": {
"@/*": ["./src/*"]
"@/*": ["./src/*"],
}
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],