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
38 lines
2.0 KiB
Docker
38 lines
2.0 KiB
Docker
# 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"]
|