From 6c26d4f58e7679c62e1e7be9d6273ee8ea7da94e Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 28 Feb 2026 01:01:11 +0100 Subject: [PATCH] Add Docker things --- Dockerfile | 44 ++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 15 +++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8d69cca --- /dev/null +++ b/Dockerfile @@ -0,0 +1,44 @@ +FROM node:20-alpine AS deps +WORKDIR /app + +COPY package.json package-lock.json* yarn.lock* pnpm-lock.yaml* ./ +RUN \ + if [ -f yarn.lock ]; then yarn install --frozen-lockfile; \ + elif [ -f package-lock.json ]; then npm ci; \ + elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm install --frozen-lockfile; \ + else echo "No lockfile found." && exit 1; \ + fi + +FROM node:20-alpine AS builder +WORKDIR /app + +COPY --from=deps /app/node_modules ./node_modules +COPY . . + +ENV NEXT_TELEMETRY_DISABLED=1 + +RUN \ + if [ -f yarn.lock ]; then yarn build; \ + elif [ -f package-lock.json ]; then npm run build; \ + elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm run build; \ + fi + +FROM node:20-alpine AS runner +WORKDIR /app + +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 +ENV PORT=80 + +RUN addgroup --system --gid 1001 nodejs && \ + adduser --system --uid 1001 nextjs + +COPY --from=builder /app/public ./public +COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static + +USER nextjs + +EXPOSE 80 + +CMD ["node", "server.js"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..ea7799a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +services: + nextjs-alixz: + build: + context: . + dockerfile: Dockerfile + args: + container_name: nextjs-alixz + env_file: .env + restart: unless-stopped + networks: + - interservices + +networks: + interservices: + external: true \ No newline at end of file