80d23f0e3d
Endoleap brand checks / verify (pull_request) Successful in 2m27s
creative workspace review checks / verify-deployed-canvas (pull_request) Successful in 3m10s
creative workspace review checks / verify (pull_request) Successful in 42m47s
python CI and deployment / verify-and-deploy (pull_request) Successful in 9m51s
44 lines
2.1 KiB
Docker
44 lines
2.1 KiB
Docker
FROM node:24-bookworm-slim AS base
|
|
LABEL io.entroia.project="waterfall-wiki"
|
|
ENV NEXT_TELEMETRY_DISABLED=1
|
|
WORKDIR /app
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends ffmpeg ca-certificates chromium fonts-noto-cjk \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
FROM base AS dependencies
|
|
WORKDIR /repo/apps/waterfall-wiki
|
|
LABEL io.entroia.wiki.build="true"
|
|
RUN corepack enable && corepack prepare pnpm@11.25.0 --activate
|
|
COPY apps/waterfall-wiki/pnpm-lock.yaml ./
|
|
COPY pnpm-workspace.yaml /repo/pnpm-workspace.yaml
|
|
COPY packages/brand/package.json /repo/packages/brand/package.json
|
|
COPY apps/waterfall-wiki/package.json ./
|
|
RUN pnpm --filter @prompt/waterfall-wiki install --frozen-lockfile --fetch-timeout=300000 --network-concurrency=8
|
|
|
|
FROM dependencies AS build
|
|
# .dockerignore excludes docs and operational notes without extra legacy COPY snapshots.
|
|
# Brand source changes invalidate compilation, not dependency installation.
|
|
COPY packages/brand/ /repo/packages/brand/
|
|
COPY apps/waterfall-wiki/ .
|
|
RUN pnpm typecheck && pnpm test && pnpm build && pnpm test:smoke
|
|
|
|
FROM build AS integration
|
|
USER node
|
|
CMD ["npm", "run", "test:integration"]
|
|
|
|
FROM base AS runtime
|
|
WORKDIR /app/apps/waterfall-wiki
|
|
ENV NODE_ENV=production HOSTNAME=0.0.0.0 PORT=3000 \
|
|
FFMPEG_PATH=/usr/bin/ffmpeg FFPROBE_PATH=/usr/bin/ffprobe
|
|
COPY --from=build --chown=node:node /repo/apps/waterfall-wiki/.next/standalone/ /app/
|
|
COPY --from=build --chown=node:node /repo/apps/waterfall-wiki/dist/worker.cjs /repo/apps/waterfall-wiki/dist/bootstrap.cjs /repo/apps/waterfall-wiki/dist/publish-learning-series.cjs /repo/apps/waterfall-wiki/dist/auth-cli.cjs ./
|
|
COPY --from=build --chown=node:node /repo/apps/waterfall-wiki/db/ ./db/
|
|
COPY --chown=node:node apps/waterfall-wiki/scripts/container-health.mjs ./
|
|
COPY --chown=node:node apps/waterfall-wiki/scripts/import-character-packs.mjs apps/waterfall-wiki/scripts/verify-character-pack.mjs ./scripts/
|
|
COPY --chown=node:node apps/waterfall-wiki/seed/characters/ ./seed/characters/
|
|
COPY --chown=node:node apps/waterfall-wiki/src/content/managed-media.json ./src/content/managed-media.json
|
|
USER node
|
|
EXPOSE 3000
|
|
CMD ["node", "server.js"]
|