РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗dcNdRnNv 23 of 39 menu
◀ ▶

Нативный модуль в Docker

Нативный модуль собирается при установке, и на Alpine для этого не хватает компилятора. Пакет bcrypt лежит в dependencies, но server.js его не вызывает - нужен лишь честный шаг npm install.

На node:24 установка проходит без дополнительных системных пакетов. Скрипт по-прежнему отдаёт hello:

const http = require('node:http'); const server = http.createServer((req, res) => { res.end('hello'); }); server.listen(3000, '0.0.0.0');

В package.json указан bcrypt среди зависимостей запуска:

{ "name": "app", "scripts": { "start": "node server.js" }, "dependencies": { "bcrypt": "5.1.1" } }

Рабочий Dockerfile на node:24-alpine ставит python3, make и g++ через apk add перед npm install:

FROM node:24-alpine WORKDIR /app RUN apk add --no-cache python3 make g++ COPY package.json . RUN npm install --omit=dev COPY server.js . USER node CMD ["node", "server.js"]

Без этих пакетов шаг установки останавливается, поэтому рабочий образ книги остаётся node:24, а Alpine здесь - отдельная проверка с компилятором. Сервис с портом 3000:

services: app: build: . ports: - "3000:3000"

После пересборки страница покажет hello. Запуск проекта:

docker compose up -d --build

Опишите сервис hash на node:24-alpine с bcrypt в package.json и системными пакетами для сборки.

Соберите образ на полном node:24 с тем же package.json и убедитесь, что установка проходит без пакетов сборки Alpine.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить