Чтобы упаковать своё приложение в образ, описывают шаги сборки в файле Dockerfile:
FROM node:22-alpine WORKDIR /app COPY package.json . RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "start"]
Разберём инструкции: • FROM — базовый образ, на котором строим (здесь Node.js); • WORKDIR — рабочая папка внутри образа; • COPY — скопировать файлы с хоста в образ; • RUN — выполнить команду при сборке (установка зависимостей); • EXPOSE — какой порт слушает приложение (документирующая инструкция); • CMD — команда, запускаемая при старте контейнера.
Порядок инструкций важен: каждая создаёт слой, и Docker кеширует их. Поэтому package.json копируют и устанавливают зависимости до копирования всего кода — тогда при изменении кода не приходится переустанавливать пакеты заново. Это ускоряет повторные сборки.