Как построить приложение Nodejs с Docker

Эта статья объяснит вам, как построить приложение Nodejs с контейнеризацией Docker. Docker позволяет упаковать и запускать приложения в качестве контейнеров.

Сегодня мы начинаем серию учебных пособий о инструментах разработки программного обеспечения. И эта первая статья рассказывает о том, как контейнерить приложение Node.js с помощью Docker. Docker помогает разработчикам упаковать и запускать приложения в качестве контейнеров. Поскольку контейнер является изолированным процессом и легкой альтернативой виртуальным машинам. В этой статье объясняется, как построить приложение Nodejs с контейнеризацией Docker. Давайте начнем!

Что такое Docker

Docker-это набор платформы в качестве сервисных продуктов, которые используют виртуализацию уровня ОС для доставки программного обеспечения в пакетах, называемых контейнерами. Это открытая платформа для разработки, доставки и запуска приложений. Docker позволяет вам отделить ваши приложения от вашей инфраструктуры, чтобы вы могли быстро доставить программное обеспечение. Docker использует архитектуру клиента-сервер. Клиент Docker разговаривает с Docker Daemon, который делает тяжелую работу строительства, бега и распределения ваших контейнеров Docker. Docker Client и Daemon общаются, используя API REST, над розетками Unix или сетевым интерфейсом. Вот диаграмма архитектуры Docker.

Docker Architecture

Предварительные условия

  • Сервер Ubuntu
  • Docker установлен на сервере
  • Node.js npm установлен

Настройка Node.js Приложение

Чтобы создать ваше изображение, вам сначала нужно будет сделать файлы приложения, которые затем вы можете скопировать в свой контейнер. Эти файлы будут включать статический контент, код и зависимости вашего приложения. Во-первых, создайте каталог для вашего проекта в домашнем каталоге вашего пользователя. Затем выполните команду ниже в новой папке, которую вы создали.

npm init -y
npm i -s express

Приведенная выше команда будет настроить приложение Node.js с Express Framework, установленным в качестве зависимости. Давайте добавим следующий код в файл app.js .

const express = require(‘express’);
const app = express();
app.get(‘/’, function(req,res){
  res.send(“Hello World”);
});
const port = 3000;
app.listen(port, function () {
  console.log(‘Listening on port 3000!’)
})

Запустите приложение с node app.js

node app.js

Перейдите в свой браузер к http: // your \ _server \ _ip: 3000. Вы увидите следующую целевую страницу. Теперь у вас есть приложение. Теперь мы можем перейти к созданию Dockerfile, который позволит нам воссоздать и масштабировать это приложение.

Напишите Dockerfile

Используя DockerFile, вы можете указать, что будет включено в ваш контейнер приложения, когда он будет выполнен, и в контейнерной среде. Прежде всего создайте Dockerfile с следующей командой в корне вашего проекта.

vi Dockerfile

Добавьте следующее из инструкции, чтобы установить базовое изображение приложения:

FROM node:12-alpine

{{LINE_43}} {{LINE_44}} Вы можете добавить файл .dockerignore, чтобы удалить файлы, которые не принадлежат образу Docker. {{LINE_46}} {{LINE_47}} Давайте создадим подкаталог node_modules в /home /node вместе с каталогом приложений. Это гарантирует, что они будут иметь необходимые разрешения, которые будут важны, когда мы создаем локальные модули узлов в контейнере с установкой NPM.

...
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app

Затем установите рабочий каталог приложения/home/node/app:

...
WORKDIR /home/node/app

Затем скопируйте Package.json и Package-lock.json, назначьте файл проекта пользовательскому «Узел», не являющемуся корректом, а затем запустите установку NPM

...
COPY package*.json ./
USER node
RUN npm install

Скопируйте код приложения с соответствующими разрешениями в каталоге приложений в контейнере

...
COPY --chown=node:node . .

Разоблачить команду для разоблачения порта:

...
EXPOSE 3000
CMD [ "node", "app.js" ]

Окончательная версия Dockerfile должна выглядеть так:

FROM node:12-alpine
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
WORKDIR /home/node/app
COPY package*.json ./
USER node
RUN npm install
COPY --chown=node:node . .
EXPOSE 3000
CMD [ "node", "app.js" ]

Создайте изображение и запустите контейнер

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

docker build -t <<image_name>> .

Это будет генерировать docker image, которое вы можете проверить, используя команду Docker Images. Теперь можно создать контейнер с этим изображением, используя следующую команду:

docker run — name <<container_name>> -p 3000:3000 -d <<image_name>>

Это запустит контейнер, который вы можете проверить, запустив команду Docker PS. Теперь в своем браузере, если вы получите доступ к http: // localhost: 3000, вы увидите, как ваше приложение Node.js работает. Однако на этот раз он работает от вашего контейнера Docker.

Заключение

Разработка с контейнером Docker очень проста и просто. Docker помогает разработчикам упаковать и запускать приложения в качестве контейнеров. В этом уроке мы узнали, как создать приложение Node.js с помощью Docker Container на Ubuntu. В будущих статьях мы напишем о большем использовании Docker, а также обсудим другие инструменты.

Исследовать