Piattaforma ITI TECHNOLOGY: monorepo, Medusa, API, sito, area riservata e deploy
Deploy stack su Proxmox / deploy (push) Failing after 3s

Monorepo npm con apps/public (Angular SSR), apps/private (Angular SPA),
apps/api (Fastify), packages/shared e packages/styles; Medusa 2.21 in medusa/;
infrastruttura Docker (Postgres PostGIS+pgvector, Redis, Caddy, backup) e
workflow Gitea Actions per il deploy via SSH a ogni push su master.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018jQyT6dR9czzGwqb7FkG6u
This commit is contained in:
Lorenzo Sanesi
2026-10-20 09:30:48 +02:00
co-authored by Claude Opus 5.5
commit b83ce039fb
505 changed files with 84544 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
# syntax=docker/dockerfile:1
# Backend Medusa + dashboard admin. Contesto di build: cartella medusa/.
# docker build -t iti-technology/medusa medusa
# `medusa build` produce apps/backend/.medusa/server (backend compilato + dashboard in public/admin) ma senza
# lockfile: nel runtime si riusano i node_modules del monorepo Medusa (installati con il lockfile e poi
# ripuliti dalle devDependencies), che Node trova risalendo le cartelle.
# All'avvio: `medusa db:migrate` (idempotente), poi `medusa start`.
ARG NODE_IMAGE=node:24-bookworm-slim
FROM ${NODE_IMAGE} AS build
WORKDIR /app
COPY package.json package-lock.json turbo.json ./
COPY apps/backend/package.json apps/backend/
RUN npm ci --no-audit --no-fund
COPY apps/backend apps/backend
# Il dashboard usa l'origine del browser come URL del backend (admin.backendUrl non impostato):
# la stessa immagine vale per qualunque dominio.
RUN cd apps/backend && npx medusa build \
&& cd /app && npm prune --omit=dev --no-audit --no-fund \
&& npm cache clean --force
FROM ${NODE_IMAGE} AS runtime
ENV NODE_ENV=production PATH=/app/node_modules/.bin:$PATH
# --chown: `medusa db:migrate` crea cartelle migrations/ vuote nei moduli che non ne hanno
COPY --from=build --chown=node:node /app/node_modules /app/node_modules
COPY --from=build /app/package.json /app/package.json
COPY --from=build /app/apps/backend/package.json /app/apps/backend/package.json
COPY --from=build /app/apps/backend/.medusa/server /app/apps/backend/.medusa/server
# Volume dei file caricati dal dashboard (immagini prodotto), serviti da Caddy su media.<dominio>/shop/
RUN mkdir -p /data/medusa-files && chown -R node:node /data/medusa-files /app/apps/backend/.medusa/server
USER node
WORKDIR /app/apps/backend/.medusa/server
EXPOSE 9000
HEALTHCHECK --interval=15s --timeout=5s --start-period=90s --retries=10 \
CMD ["node", "-e", "fetch('http://127.0.0.1:9000/health').then(r=>process.exit(r.ok?0:1),()=>process.exit(1))"]
CMD ["sh", "-c", "medusa db:migrate && exec medusa start"]