f6fc3c262e
Passe l'installation de bun à pnpm (runtime/build/test restent bun). Dépendance prod @ng-eventually/client résolue depuis le Gitea public en git+https (committée, reproductible via pnpm-lock.yaml). Script link:polyfill (S2 copie-overlay + watcher) pour un lien local réactif préservant l'instance @ng-org unique. bun (peer de bun-plugin-tailwind) approuvé au build (pnpm.onlyBuiltDependencies) pour que node_modules/.bin/bun soit un vrai binaire. Dockerfile: install pnpm avec git + node dans l'image, runtime bun inchangé. Doctrine tech-stack (deployment, stack-and-commands) mise à jour. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014GbGgNEHRejVKoREvFuDFg
28 lines
1019 B
Docker
28 lines
1019 B
Docker
# Use the official Bun image (runtime stays Bun; only install moves to pnpm)
|
|
FROM oven/bun:1-alpine AS base
|
|
WORKDIR /app
|
|
|
|
# Install dependencies with pnpm.
|
|
# - git: the @ng-eventually/client polyfill is a git+https (public Gitea) dependency → no auth.
|
|
# - nodejs + npm: pnpm is a Node CLI; we pin the exact pnpm version via `npm i -g`
|
|
# (Alpine's nodejs package does not bundle corepack).
|
|
# The `bun` npm peer (pulled by bun-plugin-tailwind) is approved to build in package.json
|
|
# (pnpm.onlyBuiltDependencies) so node_modules/.bin/bun is a real binary — required because
|
|
# `bun run start` puts node_modules/.bin ahead of PATH.
|
|
FROM base AS install
|
|
RUN apk add --no-cache git nodejs npm \
|
|
&& npm install -g pnpm@10.26.0
|
|
COPY package.json pnpm-lock.yaml ./
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
# Copy source code and build assets
|
|
FROM base AS release
|
|
COPY --from=install /app/node_modules node_modules
|
|
COPY . .
|
|
|
|
# Run the app
|
|
ENV NODE_ENV=production
|
|
USER bun
|
|
EXPOSE 3000/tcp
|
|
ENTRYPOINT [ "bun", "run", "start" ]
|