fix(docker): собирать bcrypt из исходников

Готовый бинарник с github внутри сборки не скачивается — запрос к
release-assets обрывается, и node-pre-gyp уходит в компиляцию, а в
node:20-alpine нет python3/make/g++. Ставим их временно в обеих
стадиях и сносим вместе с кэшем node-gyp, образ остаётся ~260 МБ.
This commit is contained in:
Claude
2026-08-30 11:46:09 +03:00
parent 913b66a9cb
commit c4e5a532a1
+11 -1
View File
@@ -15,6 +15,11 @@ RUN npm run build
# ===================================================== # =====================================================
FROM node:20-alpine AS backend-build FROM node:20-alpine AS backend-build
# bcrypt — нативный модуль. Готовый бинарник с github внутри сборки не
# скачивается (запрос к release-assets обрывается), поэтому собираем из
# исходников: для этого нужны python3/make/g++.
RUN apk add --no-cache python3 make g++
WORKDIR /app/backend WORKDIR /app/backend
COPY backend/package.json backend/package-lock.json* ./ COPY backend/package.json backend/package-lock.json* ./
RUN npm install RUN npm install
@@ -33,7 +38,12 @@ WORKDIR /app
# Backend production deps # Backend production deps
COPY backend/package.json backend/package-lock.json* ./backend/ COPY backend/package.json backend/package-lock.json* ./backend/
RUN cd backend && npm install --omit=dev # То же самое для боевых зависимостей: компилятор ставим временно и сносим
# сразу после установки, чтобы не тащить его в итоговый образ.
RUN apk add --no-cache --virtual .build-deps python3 make g++ \
&& cd backend && npm install --omit=dev \
&& apk del .build-deps \
&& rm -rf /root/.cache
# Built backend # Built backend
COPY --from=backend-build /app/backend/dist ./backend/dist COPY --from=backend-build /app/backend/dist ./backend/dist