docker: force bcrypt build-from-source and enable pre/post scripts across stages
This commit is contained in:
23
Dockerfile
23
Dockerfile
@@ -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
|
||||||
|
Reference in New Issue
Block a user