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

Каталог зависимостей в Docker

Каталог зависимостей на хосте пустой и затирает пакеты, которые уже лежали в образе. Том ./app:/app подменяет весь /app, включая node_modules из слоя сборки.

Шаблон ставит пакеты на этапе образа. Файл app/Dockerfile:

FROM node:24 WORKDIR /app COPY package.json . RUN npm install COPY server.js . CMD ["node", "server.js"]

Скрипт app/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 пуст - установка всё равно создаёт каталог в образе:

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

Второй том без имени слева держит /app/node_modules отдельно от папки проекта. Без этой строки пустой node_modules с хоста скрывает каталог из образа. Файл compose.yaml:

services: web: build: ./app ports: - "3000:3000" volumes: - ./app:/app - /app/node_modules

Подъём с пересборкой поднимет сервис с кодом с диска и пакетами из образа. Запуск проекта:

docker compose up -d --build

Соберите сервис pkg с установкой npm в образе и двумя томами, чтобы каталог пакетов не затирался с хоста.

Откройте localhost:3000 и проверьте ответ hello.

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