логотип PurpleSchool
логотип PurpleSchool

Запуск Node.js-приложений в Docker

Автор

Олег Марков

Введение

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

Создание Dockerfile

Первый шаг к запуску вашего Node.js-приложения в Docker — это создание Dockerfile. Это файл, который содержит инструкции для сборки Docker-образа. Вот пример простого Dockerfile для Node.js:

# Используем официальный образ Node.js
FROM node:14

# Создаем рабочую директорию
WORKDIR /app

# Копируем package.json и package-lock.json
COPY package*.json ./

# Устанавливаем зависимости
RUN npm install

# Копируем все файлы в рабочую директорию
COPY . .

# Приложение будет слушать на этом порту
EXPOSE 3000

# Команда для запуска приложения
CMD ["node", "app.js"]

В этом Dockerfile мы используем официальный образ Node.js, устанавливаем все зависимости и указываем Docker, какой порт будет использоваться. Затем прописываем команду для запуска приложения. Как видите, все просто и интуитивно понятно.

Основные компоненты Dockerfile

  • FROM — определяет базовый образ, который будет использован.
  • WORKDIR — задает директорию внутри контейнера, где ваше приложение будет работать.
  • COPY — копирует файлы из вашего проекта в контейнер.
  • RUN — выполняет команды внутри контейнера, например, установка зависимостей.
  • EXPOSE — указывает, какой порт будет использоваться приложением.
  • CMD — указывает команду, которая будет выполняться при запуске контейнера.

Сборка Docker-образа

Следующим шагом будет сборка Docker-образа. Для этого вы должны находиться в каталоге, где лежит ваш Dockerfile. Затем выполните команду:

docker build -t my-node-app .

Обратите внимание на флаг -t, который позволяет вам присвоить имя вашему образу (в данном случае my-node-app). Точка (.) в конце команды указывает, что сборка будет происходить в текущей директории. Давайте теперь разберем шаги, происходящие в этой команде.

Что происходит при сборке образа

  1. Docker читает инструкции из Dockerfile.
  2. Каждая инструкция создает слой в Docker-образе.
  3. Все слои кешируются, что делает повторные сборки более быстрыми.
  4. Итоговый образ содержит все слои и готов для запуска.

Запуск контейнера

Теперь, когда у нас есть собранный образ, мы можем запустить контейнер. Сделать это можно следующей командой:

docker run -p 3000:3000 my-node-app

Эта команда запускает контейнер с нашим образом my-node-app и перенаправляет порт 3000 внутри контейнера на порт 3000 на хосте, чтобы приложение было доступно извне. Команда run также загружает контейнер, если он еще не был запущен.

Разбираем команду docker run

  • -p — маппинг портов. В данном случае это означает, что запросы на порт 3000 хоста перенаправляются на порт 3000 контейнера.
  • my-node-app — это имя образа, который вы хотите запустить.

Проверка работы приложения

Убедитесь, что ваше приложение работает, открыв веб-браузер и введя:

http://localhost:3000

Если все настроено верно, вы должны увидеть страницу, которую вы ожидали увидеть, когда приложение работает локально. Это означает, что ваш контейнер успешно запущен и обслуживает запросы.

Заключение

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

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile