30 lines
961 B
Docker
30 lines
961 B
Docker
|
FROM node:22.4.1-slim AS node-pnpm
|
||
|
ENV PNPM_HOME="/pnpm"
|
||
|
ENV PATH="$PNPM_HOME:$PATH"
|
||
|
RUN corepack enable
|
||
|
WORKDIR /usr/src/app
|
||
|
|
||
|
FROM node-pnpm AS builder
|
||
|
RUN pnpm install --global turbo@2.0.12
|
||
|
COPY ./ ./
|
||
|
RUN turbo prune @repo/api --docker
|
||
|
|
||
|
FROM node-pnpm AS installer
|
||
|
COPY .gitignore .gitignore
|
||
|
COPY --from=builder /usr/src/app/out/json/ ./
|
||
|
COPY --from=builder /usr/src/app/out/pnpm-lock.yaml ./pnpm-lock.yaml
|
||
|
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile --prod
|
||
|
COPY --from=builder /usr/src/app/out/full/ ./
|
||
|
COPY turbo.json turbo.json
|
||
|
# RUN pnpm --filter=@repo/api... exec turbo run build
|
||
|
|
||
|
FROM node-pnpm AS runner
|
||
|
ENV NODE_ENV=production
|
||
|
ENV HOSTNAME=0.0.0.0
|
||
|
|
||
|
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 applicationrunner
|
||
|
USER applicationrunner
|
||
|
COPY --from=installer --chown=applicationrunner:nodejs /usr/src/app ./
|
||
|
WORKDIR /usr/src/app/apps/api
|
||
|
CMD ["node", "--import=tsx", "./src/bin/server.ts"]
|