diff --git a/.dockerignore b/.dockerignore index b10a29b..f1d55e1 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,3 +2,5 @@ node_modules npm-debug.log .nuxt .git +.output +.env diff --git a/Dockerfile b/Dockerfile index 64c2c60..af15cc5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,33 +1,36 @@ -FROM node:22-bookworm-slim - -# Create app directory -RUN mkdir -p /app -WORKDIR /app +# Multi-stage : le stage builder installe toutes les dépendances (y compris +# devDependencies : nuxt, prisma CLI, types) pour générer .output/, un +# bundle Nitro autonome qui embarque déjà ses propres node_modules tracés. +# Le stage final ne copie que .output/ — plus besoin du toolchain de build +# ni des devDependencies (~440MB de npm install jetés une fois le build +# terminé). +FROM node:22-bookworm-slim AS build -#Install app dependencies RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends openssl && rm -rf /var/lib/apt/lists/* - -#Set environment variables +WORKDIR /app -# Bundle app source COPY . /app RUN npm install - - - -#congig prisma RUN npx prisma generate RUN npx prisma migrate deploy RUN npx prisma migrate status -# Build app RUN npm run build -#Set prisma folder -RUN mkdir /app/.output/server/prisma -RUN cp /app/prisma/milestone.db /app/.output/server/prisma/milestone.db +RUN mkdir /app/.output/server/prisma && cp /app/prisma/milestone.db /app/.output/server/prisma/milestone.db + + +FROM node:22-bookworm-slim + +# openssl requis par le moteur Prisma au runtime (mêmes bibliothèques que +# lors du `prisma generate` du stage builder, binaryTargets="native"). +RUN apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends openssl && rm -rf /var/lib/apt/lists/* + +WORKDIR /app + +COPY --from=build /app/.output /app/.output ENV NUXT_HOST=0.0.0.0 ENV NUXT_PORT=3000 @@ -35,5 +38,6 @@ ENV NUXT_PORT=3000 # Expose port EXPOSE 3000 5555 -#start app -CMD [ "npm", "run", "start" ] \ No newline at end of file +# Appel direct du serveur Nitro déjà construit — pas besoin du CLI nuxt +# (devDependency, absente de ce stage) pour lancer `npm run start`. +CMD ["node", ".output/server/index.mjs"]