fix(docker): собирать bcrypt из исходников
Готовый бинарник с github внутри сборки не скачивается — запрос к release-assets обрывается, и node-pre-gyp уходит в компиляцию, а в node:20-alpine нет python3/make/g++. Ставим их временно в обеих стадиях и сносим вместе с кэшем node-gyp, образ остаётся ~260 МБ.
This commit is contained in:
+11
-1
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user