Зависимости для запуска в Docker
Зависимости для запуска ставят без пакетов, которые нужны только при разработке. Список devDependencies может быть непустым в файле проекта, но в рабочий образ эти пакеты не попадают.
В package.json объект
dependencies пуст,
а в devDependencies
лежит debug -
сервер его не импортирует,
значит для ответа он не нужен.
Содержимое файла такое:
{
"name": "app",
"scripts": {
"start": "node server.js"
},
"dependencies": {},
"devDependencies": {
"debug": "4.3.7"
}
}
Скрипт слушает 0.0.0.0
и отдаёт hello без
сторонних модулей:
const http = require('node:http');
const server = http.createServer((req, res) => {
res.end('hello');
});
server.listen(3000, '0.0.0.0');
Шаг установки в Dockerfile
вызывает npm install
с флагом --omit=dev,
поэтому debug в слой
не кладётся:
FROM node:24
WORKDIR /app
COPY package.json .
RUN npm install --omit=dev
COPY server.js .
CMD ["node", "server.js"]
Сервис собирается из точки
и публикует порт 3000.
Файл compose.yaml:
services:
app:
build: .
ports:
- "3000:3000"
После пересборки страница
на localhost:3000
покажет hello.
Запуск проекта:
docker compose up -d --build
Опишите сервис api с eslint только в devDependencies и установкой npm при сборке без dev-пакетов.
Пересоберите образ и проверьте ответ на порту 3000.