ajouter un Dockerfile et mettre à jour docker-compose.yml pour la configuration de l'application FormCraft

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Puechberty Arthur
2026-04-27 20:54:25 +02:00
parent 4c3809a043
commit 273dd700e9
3 changed files with 65 additions and 11 deletions
+15
View File
@@ -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
+37
View File
@@ -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"]
+13 -11
View File
@@ -1,19 +1,21 @@
services: services:
formcraft: formcraft:
image: node:20-alpine build:
context: .
dockerfile: Dockerfile
image: formcraft
container_name: formcraft container_name: formcraft
working_dir: /app init: true
volumes: env_file:
- .:/app - .env
- node_modules:/app/node_modules
- formcraft_data:/app/data
ports:
- "3008:3000"
environment: environment:
- DATABASE_URL=file:./data/dev.db NODE_ENV: production
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" PORT: 3000
ports:
- "${WEB_PORT:-3000}:3000"
volumes:
- formcraft_data:/app/data
restart: unless-stopped restart: unless-stopped
volumes: volumes:
node_modules:
formcraft_data: formcraft_data: