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

Два этапа сборки в Docker

Два этапа сборки оставляют в итоговом образе программу и пакеты, а инструменты установки можно не тащить отдельной копией файлов. Промежуточный этап готовит /app, финальный забирает готовую папку одной строкой COPY --from=build.

Первый этап на node:24 с именем build ставит зависимости и кладёт скрипт. Второй этап снова берёт node:24 и копирует /app целиком. Рецепт такой:

FROM node:24 AS build WORKDIR /app COPY package.json . RUN npm install --omit=dev COPY server.js . FROM node:24 WORKDIR /app COPY --from=build /app /app CMD ["node", "server.js"]

Скрипт слушает порт 3000 и отдаёт hello:

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

Файл package.json без сторонних пакетов:

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

Сервис публикует пару 3000 на хосте. Файл compose.yaml:

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

После подъёма страница покажет hello. Запуск проекта:

docker compose up -d --build

Соберите сервис stage с этапом build и ответом stage на порту 3000.

Проверьте адрес localhost:3000 после пересборки двухэтапного Dockerfile.

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