docker: force bcrypt build-from-source and enable pre/post scripts across stages

This commit is contained in:
2025-10-06 17:59:25 +02:00
parent 7e3173f5b3
commit 05b54f41fe

View File

@@ -4,11 +4,16 @@ FROM node:22-alpine AS builder
RUN npm install -g pnpm \ RUN npm install -g pnpm \
&& apk add --no-cache python3 make g++ libc6-compat && apk add --no-cache python3 make g++ libc6-compat
ENV npm_config_build_from_source=1 \
npm_config_python=python3
RUN pnpm config set enable-pre-post-scripts true
WORKDIR /app WORKDIR /app
# Install all deps for building server # Install all deps for building server
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
RUN pnpm install --frozen-lockfile --ignore-scripts=false RUN pnpm install --frozen-lockfile --ignore-scripts=false --enable-pre-post-scripts \
&& pnpm rebuild bcrypt --build-from-source || true
# Copy only server sources and tsconfig for server build # Copy only server sources and tsconfig for server build
COPY src/server ./src/server COPY src/server ./src/server
@@ -24,6 +29,10 @@ FROM node:22-alpine AS production
RUN npm install -g pnpm ts-node \ RUN npm install -g pnpm ts-node \
&& apk add --no-cache su-exec curl python3 make g++ libc6-compat && apk add --no-cache su-exec curl python3 make g++ libc6-compat
ENV npm_config_build_from_source=1 \
npm_config_python=python3
RUN pnpm config set enable-pre-post-scripts true
# Set working directory # Set working directory
WORKDIR /app WORKDIR /app
@@ -31,8 +40,8 @@ WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
# Install production dependencies only # Install production dependencies only
RUN pnpm install --frozen-lockfile --prod --ignore-scripts=false \ RUN pnpm install --frozen-lockfile --prod --ignore-scripts=false --enable-pre-post-scripts \
&& pnpm rebuild bcrypt || true && pnpm rebuild bcrypt --build-from-source || true
# Copy prebuilt application artifacts from repository (no TS build in image) # Copy prebuilt application artifacts from repository (no TS build in image)
COPY dist ./dist COPY dist ./dist
@@ -72,11 +81,15 @@ FROM node:22-alpine AS production-prebuilt
RUN npm install -g pnpm ts-node \ RUN npm install -g pnpm ts-node \
&& apk add --no-cache su-exec curl python3 make g++ libc6-compat && apk add --no-cache su-exec curl python3 make g++ libc6-compat
ENV npm_config_build_from_source=1 \
npm_config_python=python3
RUN pnpm config set enable-pre-post-scripts true
WORKDIR /app WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
RUN pnpm install --frozen-lockfile --prod --ignore-scripts=false \ RUN pnpm install --frozen-lockfile --prod --ignore-scripts=false --enable-pre-post-scripts \
&& pnpm rebuild bcrypt || true && pnpm rebuild bcrypt --build-from-source || true
# Copy prebuilt artifacts from repository # Copy prebuilt artifacts from repository
COPY dist ./dist COPY dist ./dist