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

Пользователь приложения в Docker

Пользователь приложения запускает процесс не от администратора образа. В node:24 уже есть учётная запись node, и после копирования файлов именно она стартует сервер.

Строка COPY --chown=node:node отдаёт файлы владельцу node, затем директива USER node задаёт пользователя для CMD. Скрипт по-прежнему отдаёт hello на порту 3000:

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": {} }

Файл Dockerfile с владельцем и пользователем:

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

Сервис собирается из точки и публикует порт. Файл compose.yaml:

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

Разовый запуск с командой whoami печатает имя node, если образ собран с USER node. Сначала поднимем сервис, затем проверим имя:

docker compose up -d --build docker compose run --rm app whoami

Опишите сервис safe, где файлы копируют с владельцем node и процесс стартует не от root.

Запустите разовую команду, которая печатает имя текущего пользователя, и сверьте вывод с node.

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