В Docker NodeJS приложения разворачиваются одной командой из Dockerfile. Все, что требуется — файлы проекта и установленный на сервере Docker.
Docker NodeJS приложения
Создаем Dockerfile, в котром будет задаваться последовательность команд. Dockerfile позволит автоматизировать процесс и не выполнять все команды поочередно в консоли.
mcedit Dockerfile
FROM node:6 RUN mkdir -p /var/project COPY /home/myrepo/ /var/project WORKDIR /var/project RUN npm install --production ENV PORT 3000 EXPOSE $PORT CMD ["npm", "start"]
Содержимое файла. За основу берется образ node с dockerhub.
Под проект подготавливаем каталог. Создаем его (RUN mkdir -p в Dockerfile, затем копируем содержимое из директории /home/myrepo/. И назначаем каталог рабочим указывая его как WORKDIR.
После этого устанавливаем зависимости npm install —production (они как для любого проекта на NodeJS заданы в файле package.json в WORKDIR)
Определяем порт, пробрасываем его вовне контейнера и запускаем приложение через npm start
Это все, что требуется. Собираем контейнер задавая имя my-node
docker build -t my-node .
Точка в конце говорит о том, что использовать нужно Dockerfile в текущем каталоге
Затем запускаем обращаясь к контейнеру по имени
docker run my-node
Если приложение должно работать в Production и быть доступно пользователям — также требуется создать контейнер с каким-либо веб-сервером. Обычно это Nginx. И перенаправлять запросы с 80 и 443 портов на порт 3000 на котором запускается NodeJS.
Сборку контейнера Nginx тоже лучше выполнять через Dockerfile, но можно собирать контейнер и в консоли (пример).
Принципы управления Docker контейнерами разобраны в отдельной статье.