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

Порядок копирования в Docker

Порядок копирования ставит файл зависимостей раньше кода, чтобы правка скрипта не повторяла установку. Сначала в образ попадает только package.json, затем идёт npm install, и уже после - server.js.

Если изменился только server.js, слой с установкой пакетов остаётся в кэше сборки. Пересборка заново выполняет лишь шаги после правки скрипта. Файл Dockerfile:

FROM node:24 WORKDIR /app COPY package.json . RUN npm install --omit=dev COPY server.js . 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 список dependencies пуст, команда start указывает на server.js:

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

Сервис с портом 3000 в описании проекта:

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

Измените текст ответа в server.js, пересоберите и сравните время сборки с полной установкой npm. Запуск с пересборкой:

docker compose up -d --build

Соберите сервис hub, где package.json копируют до server.js, а ответ страницы - hub.

Поправьте только скрипт и убедитесь, что установка npm не повторилась в логе сборки.

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