Files
crowdlending-app/backend/Dockerfile
T
2026-09-05 11:11:30 +02:00

32 lines
1.3 KiB
Docker

FROM node:20-bookworm-slim AS deps
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 build-essential \
&& rm -rf /var/lib/apt/lists/*
COPY backend/package.json backend/package-lock.json* ./
RUN npm install --omit=dev
FROM node:20-bookworm-slim
WORKDIR /app
ENV NODE_ENV=production
COPY --from=deps /app/node_modules ./node_modules
COPY backend/. .
# src/ai/mcpBridge.js importe "../../../mcp-server/tools.js" (réutilisation
# telle quelle du code d'outillage du serveur MCP externe) — on reproduit
# donc ici la même position relative : /mcp-server à côté de /app.
COPY mcp-server/tools.js /mcp-server/tools.js
# Node résout les imports nus de tools.js (zod, jsdom, @mozilla/readability)
# en remontant les node_modules à partir de SON PROPRE dossier (/mcp-server),
# pas de celui de mcpBridge.js qui l'importe — donc /app/node_modules seul ne
# suffit pas, même si ces paquets y sont installés (voir package.json). On
# lui donne accès aux mêmes dépendances via un lien symbolique.
RUN ln -s /app/node_modules /mcp-server/node_modules
RUN mkdir -p /app/data /app/uploads && cp -r /app/icons_seed /app/icons_seed_init
COPY backend/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
EXPOSE 4000
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["node", "src/server.js"]