Образ Alpine в Docker
Образ Alpine меньше обычного,
и тот же скрипт без чужих
модулей на нём запускается.
Базовая строка FROM
берёт node:24-alpine
вместо полного node:24,
а server.js остаётся
на встроенном node:http.
Скрипт слушает 0.0.0.0
на порту 3000 и
отдаёт hello:
const http = require('node:http');
const server = http.createServer((req, res) => {
res.end('hello');
});
server.listen(3000, '0.0.0.0');
Установка npm здесь не нужна:
сторонних пакетов нет.
Файл Dockerfile:
FROM node:24-alpine
WORKDIR /app
COPY --chown=node:node server.js .
USER node
CMD ["node", "server.js"]
Сервис собирается из точки
и публикует порт 3000.
Файл compose.yaml:
services:
app:
build: .
ports:
- "3000:3000"
Это конец линейки рабочих
образов на полном
node:24: уроки выше
шли именно с ним, а здесь
проверяем тот же ответ
на Alpine.
Запуск проекта:
docker compose up -d --build
Соберите сервис lite на node:24-alpine с ответом lite на порту 3000.
Сравните размер метки lite с образом на полном node:24 через список образов.