From 273dd700e9c478d1416bf4e5017fb57f9343eeb6 Mon Sep 17 00:00:00 2001 From: Puechberty Arthur Date: Mon, 27 Apr 2026 20:54:25 +0200 Subject: [PATCH] =?UTF-8?q?ajouter=20un=20Dockerfile=20et=20mettre=20?= =?UTF-8?q?=C3=A0=20jour=20docker-compose.yml=20pour=20la=20configuration?= =?UTF-8?q?=20de=20l'application=20FormCraft?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot --- .dockerignore | 15 +++++++++++++++ Dockerfile | 37 +++++++++++++++++++++++++++++++++++++ docker-compose.yml | 24 +++++++++++++----------- 3 files changed, 65 insertions(+), 11 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..538d3a3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,15 @@ +.git +.gitignore +Dockerfile +docker-compose.yml +node_modules +.next +coverage +npm-debug.log +yarn-error.log +*.log +.env +data +prisma/data +*.db +*.db-journal diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f63fe56 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,37 @@ +FROM node:20-bookworm-slim AS base +WORKDIR /app +ENV NEXT_TELEMETRY_DISABLED=1 +RUN apt-get update \ + && apt-get install -y --no-install-recommends openssl ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +FROM base AS deps +COPY package.json package-lock.json ./ +RUN npm ci + +FROM base AS build +ARG DATABASE_URL="file:./data/dev.db" +ENV DATABASE_URL=$DATABASE_URL +COPY --from=deps /app/node_modules ./node_modules +COPY . . +RUN npx prisma generate +RUN npm run build + +FROM base AS prod-deps +COPY package.json package-lock.json ./ +RUN npm ci --omit=dev + +FROM base AS runner +ENV NODE_ENV=production +WORKDIR /app +RUN mkdir -p /app/data +COPY --from=prod-deps /app/node_modules ./node_modules +COPY --from=build /app/package.json ./package.json +COPY --from=build /app/next.config.ts ./next.config.ts +COPY --from=build /app/public ./public +COPY --from=build /app/.next ./.next +COPY --from=build /app/prisma ./prisma +RUN chown -R node:node /app +USER node +EXPOSE 3000 +CMD ["sh", "-c", "npx prisma migrate deploy && npm run start"] diff --git a/docker-compose.yml b/docker-compose.yml index 81b5ac0..03b8fa0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,19 +1,21 @@ services: formcraft: - image: node:20-alpine + build: + context: . + dockerfile: Dockerfile + image: formcraft container_name: formcraft - working_dir: /app - volumes: - - .:/app - - node_modules:/app/node_modules - - formcraft_data:/app/data - ports: - - "3008:3000" + init: true + env_file: + - .env environment: - - DATABASE_URL=file:./data/dev.db - command: sh -c "apk add --no-cache openssl && npm install --include=dev && npx prisma generate && npx prisma migrate deploy && npm run build && NODE_ENV=production npm start" + NODE_ENV: production + PORT: 3000 + ports: + - "${WEB_PORT:-3000}:3000" + volumes: + - formcraft_data:/app/data restart: unless-stopped volumes: - node_modules: formcraft_data: