Ctrl K
ComunidadGuías…

Dockerfile

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
FROM node:24-bookworm-slim AS client-build
WORKDIR /workspace

COPY package.json package-lock.json ./
RUN npm ci

COPY angular.json tsconfig.json tsconfig.app.json ngsw-config.json ./
COPY src ./src
COPY public ./public
RUN npm run build -- --configuration production --base-href /

FROM node:24-bookworm-slim AS server-build
WORKDIR /workspace/server

COPY server/package.json server/package-lock.json ./
RUN npm ci

COPY server/nest-cli.json server/tsconfig.json server/tsconfig.build.json ./
COPY server/src ./src
RUN npm run build && npm prune --omit=dev

FROM node:24-bookworm-slim AS runtime
WORKDIR /app
ENV NODE_ENV=production
ENV PORT=8080
ENV STATIC_ROOT=/app/public
ENV MEDIA_ROOT=/app/media

COPY --from=server-build --chown=node:node /workspace/server/node_modules ./node_modules
COPY --from=server-build --chown=node:node /workspace/server/dist ./dist
COPY --from=client-build --chown=node:node /workspace/dist/battle-forge/browser ./public

RUN mkdir -p /app/media/avatars/players /app/media/avatars/creatures /app/media/slides \
    && chown -R node:node /app/media

USER node
EXPOSE 8080
CMD ["node", "dist/main.js"]