diff --git a/Dockerfile b/Dockerfile index 6b8a636..6eafcd4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,47 +1,14 @@ -FROM node:22-alpine AS deps +FROM node:22-alpine RUN apk add --no-cache libc6-compat openssl WORKDIR /app -COPY package.json package-lock.json ./ -RUN npm ci - -# Étape 2 : Build de l'application -FROM node:22-alpine AS builder -WORKDIR /app -COPY --from=deps /app/node_modules ./node_modules +# On copie tout, on installe tout, on build tout au même endroit COPY . . - -# Variables d'environnement nécessaires pour le build -# (Prisma a besoin de DATABASE_URL pour npx prisma generate) -ENV NEXT_TELEMETRY_DISABLED 1 - -RUN DATABASE_URL="postgresql://dummy:dummy@localhost:5432/dummy" DEBUG=prisma:* ./node_modules/.bin/prisma generate --schema=prisma/schema.prisma +RUN npm install +RUN npx prisma generate RUN npm run build -# Étape 3 : Image de production (Runner) -FROM node:22-alpine AS runner -WORKDIR /app - -ENV NODE_ENV production -ENV NEXT_TELEMETRY_DISABLED 1 - -RUN addgroup --system --gid 1001 nodejs -RUN adduser --system --uid 1001 nextjs - -# On ne copie que le nécessaire du build standalone -COPY --from=builder /app/public ./public -# Copier explicitement prisma pour le runtime -COPY --from=builder /app/prisma ./prisma -COPY --from=builder /app/prisma.config.js ./prisma.config.js -COPY --from=builder --chown=nextjs:nodejs /app/node_modules/.prisma ./node_modules/.prisma -COPY --from=builder --chown=nextjs:nodejs /app/node_modules/dotenv ./node_modules/dotenv -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 -ENV HOSTNAME "0.0.0.0" -CMD ["node", "server.js"] \ No newline at end of file +# On lance directement via npm +CMD ["npm", "start"] \ No newline at end of file diff --git a/admin/Dockerfile b/admin/Dockerfile index d1c7e5b..15072a2 100644 --- a/admin/Dockerfile +++ b/admin/Dockerfile @@ -1,58 +1,15 @@ -# Base image -FROM node:22-alpine AS base +FROM node:22-alpine RUN apk add --no-cache libc6-compat openssl - -# Install dependencies only when needed -FROM base AS deps WORKDIR /app -# Install dependencies -COPY package.json package-lock.json ./ -RUN npm ci - -# Rebuild the source code only when needed -FROM base AS builder -WORKDIR /app -COPY --from=deps /app/node_modules ./node_modules +# Copie et installation COPY . . - -# Generate Prisma Client -RUN DATABASE_URL="postgresql://dummy:dummy@localhost:5432/dummy" DEBUG=prisma:* npx prisma generate --schema=prisma/schema.prisma - -# Build Next.js +RUN npm install +RUN npx prisma generate RUN npm run build -# Production image, copy all the files and run next -FROM base AS runner -WORKDIR /app - -ENV NODE_ENV production - -RUN addgroup --system --gid 1001 nodejs -RUN adduser --system --uid 1001 nextjs - -COPY --from=builder --chown=nextjs:nodejs /app/public ./public -COPY --from=builder --chown=nextjs:nodejs /app/prisma ./prisma -COPY --from=builder --chown=nextjs:nodejs /app/prisma.config.js ./prisma.config.js -COPY --from=builder --chown=nextjs:nodejs /app/node_modules/.prisma ./node_modules/.prisma -COPY --from=builder --chown=nextjs:nodejs /app/node_modules/prisma ./node_modules/prisma -COPY --from=builder --chown=nextjs:nodejs /app/node_modules/dotenv ./node_modules/dotenv - -# Set the correct permission for prerender cache -RUN mkdir .next -RUN chown nextjs:nodejs .next - -# Automatically leverage output traces to reduce image size -COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ -COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static - -USER nextjs - EXPOSE 3001 +ENV PORT=3001 -ENV PORT 3001 -ENV HOSTNAME "0.0.0.0" - -# Run migrations and start the server -# Utilise le binaire local pour éviter que npx tente de le télécharger -CMD ["sh", "-c", "./node_modules/.bin/prisma db push --schema=prisma/schema.prisma --accept-data-loss && node server.js"] +# On lance directement via npm (avec push de la BD si besoin, ou juste start) +CMD ["sh", "-c", "npx prisma db push --schema=prisma/schema.prisma --accept-data-loss && npm start"]