Докеризация приложения Node.js с нуля

Докеризация приложения Node.js с нуля

Докеризация приложения Node.js может значительно упростить процесс развертывания и улучшить масштабируемость вашего приложения. Docker - это платформа контейнеризации, которая позволяет упаковать ваше приложение и его зависимости в контейнер, который затем может быть запущен на любой платформе, поддерживающей Docker.

В этой статье мы рассмотрим шаги, необходимые для Dockerize приложения Node.js с нуля.

Шаг 1: Создание приложения Node.js

Первым шагом будет создание приложения Node.js, которое мы хотим докеризировать. Для этого мы будем использовать фреймворк Express.js, который является популярным фреймворком веб-приложений для Node.js.

Чтобы создать приложение Express.js, нам сначала нужно установить Node.js и менеджер пакетов npm на нашу машину. После установки Node.js и npm мы можем создать новое приложение Express.js, выполнив следующую команду:

npx express-generator myapp

Это создаст новое приложение Express.js в каталоге под названием myapp. После создания приложения мы можем перейти в каталог и установить его зависимости с помощью npm:

cd myapp
npm install

Шаг 2: Создание Dockerfile

Следующим шагом будет создание Dockerfile, который представляет собой конфигурационный файл, описывающий, как создать образ Docker для нашего приложения Node.js.

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

# Use an official Node.js runtime as a parent image
FROM node:14-alpine

# Set the working directory to /app
WORKDIR /app

# Copy package.json and package-lock.json to the working directory
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy the rest of the application code to the working directory
COPY . .

# Expose port 3000
EXPOSE 3000

# Start the application
CMD [ "npm", "start" ]

Давайте пройдемся по этому Dockerfile строка за строкой:

FROM node:14-alpine: Эта строка указывает, что мы хотим использовать официальную среду исполнения Node.js 14 в качестве базового образа для нашего образа Docker. Alpine - это легкий дистрибутив Linux, который обычно используется для Docker-образов из-за своего небольшого размера.

  • WORKDIR /app: Эта строка устанавливает рабочий каталог для нашего образа Docker в /app.
  • COPY package*.json ./: Эта строка копирует файлы package.json и package-lock.json в рабочий каталог.
  • RUN npm install: Эта строка устанавливает зависимости, перечисленные в package.json.
  • COPY ...: Эта строка копирует остальной код приложения в рабочий каталог.
  • EXPOSE 3000: Эта строка открывает порт 3000 - порт, который будет прослушивать наше приложение Node.js.
  • CMD [ "npm", "start" ]: В этой строке указывается команда, которая будет выполняться при запуске контейнера Docker. В данном случае мы запускаем наше приложение Node.js с помощью команды npm start.

Шаг 3: Сборка образа Docker

Теперь, когда у нас есть Dockerfile, мы можем использовать его для создания образа Docker для нашего приложения Node.js. Для этого мы воспользуемся командой docker build.

Откройте окно терминала, перейдите в корневой каталог вашего приложения и выполните следующую команду:

docker build -t myapp .

Эта команда указывает Docker на сборку нового образа с использованием Dockerfile в текущем каталоге и присваивает ему имя myapp. Символ . в конце команды указывает контекст сборки, то есть каталог, который Docker использует в качестве корня процесса сборки.

Шаг 4: Запуск контейнера Docker

Теперь, когда у нас есть образ Docker для нашего приложения Node.js, мы можем использовать его для запуска контейнера Docker. Для этого мы воспользуемся командой docker run.

Откройте окно терминала и выполните следующую команду:

docker run -p 3000:3000 myapp

Эта команда указывает Docker запустить новый контейнер, используя образ myapp, который мы только что создали, и сопоставить порт 3000 из контейнера с портом 3000 на хост-машине. Это позволит нам получить доступ к нашему приложению Node.js, запущенному внутри контейнера, через веб-браузер.

Если все настроено правильно, вы должны увидеть вывод в окне терминала, указывающий на то, что ваше приложение Node.js запущено. Теперь вы можете открыть веб-браузер и перейти по адресу http://localhost:3000, чтобы увидеть свое приложение в действии.

Заключение

В этой статье мы рассмотрели шаги, необходимые для Dockerize приложения Node.js с нуля, без копирования других. Мы начали с создания нового приложения Node.js с использованием фреймворка Express.js, затем создали Dockerfile, в котором описали, как создать образ Docker для нашего приложения. Затем мы создали образ Docker и запустили контейнер Docker, используя этот образ. Выполнив эти шаги, вы теперь должны иметь полностью Dockerized Node.js приложение, которое можно легко развернуть и масштабировать.

Спасибо за ваше время!