Эта статья объяснит вам, как построить приложение Nodejs с контейнеризацией Docker. Docker позволяет упаковать и запускать приложения в качестве контейнеров.
Сегодня мы начинаем серию учебных пособий о инструментах разработки программного обеспечения. И эта первая статья рассказывает о том, как контейнерить приложение Node.js с помощью Docker. Docker помогает разработчикам упаковать и запускать приложения в качестве контейнеров. Поскольку контейнер является изолированным процессом и легкой альтернативой виртуальным машинам. В этой статье объясняется, как построить приложение Nodejs с контейнеризацией Docker. Давайте начнем!
- Что такое Docker
- Пререквизиты
- Настройка Node.js Application
- написать Dockerfile
- Строите изображение и запустите контейнер Docker
- Заключение
Что такое Docker
Docker-это набор платформы в качестве сервисных продуктов, которые используют виртуализацию уровня ОС для доставки программного обеспечения в пакетах, называемых контейнерами. Это открытая платформа для разработки, доставки и запуска приложений. Docker позволяет вам отделить ваши приложения от вашей инфраструктуры, чтобы вы могли быстро доставить программное обеспечение. Docker использует архитектуру клиента-сервер. Клиент Docker разговаривает с Docker Daemon, который делает тяжелую работу строительства, бега и распределения ваших контейнеров Docker. Docker Client и Daemon общаются, используя API REST, над розетками Unix или сетевым интерфейсом. Вот диаграмма архитектуры Docker.
Предварительные условия
- Сервер 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, а также обсудим другие инструменты.