Piattaforma ITI TECHNOLOGY: monorepo, Medusa, API, sito, area riservata e deploy
Deploy stack su Proxmox / deploy (push) Failing after 3s
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:
@@ -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"]
|
||||
Reference in New Issue
Block a user