Команда запуска в Docker
Команда запуска берёт скрипт
старта из файла зависимостей,
а не имя node вручную.
Служба передаёт в контейнер
npm start, а npm
находит строку start
в package.json.
Скрипт start равен
node server.js.
server.js слушает
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');
Файл зависимостей:
{
"name": "app",
"scripts": {
"start": "node server.js"
},
"dependencies": {}
}
Dockerfile ставит
пакеты при сборке и задаёт
CMD по умолчанию:
FROM node:24
WORKDIR /app
COPY package.json .
RUN npm install
COPY server.js .
CMD ["node", "server.js"]
В описании проекта команду сервиса задают явно:
services:
app:
build: .
ports:
- "3000:3000"
command: ["npm", "start"]
Подъём в фоне поднимет
процесс npm, который запустит
скрипт сервера.
В браузере на localhost:3000
видно слово hello.
Запуск проекта:
docker compose up -d --build
Опишите сервис run со стартом через npm и ответом run на порту 3000.
Откройте localhost:3000 и сверьте текст страницы с заданным словом.