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

Разработка JS в Docker

Автор

Олег Марков

Введение

В мире разработки программного обеспечения Docker стал незаменимым инструментом. Он позволяет изолировать приложение и его зависимости в контейнерах, что облегчает переноса приложений между различными средами. Если вы работаете с JavaScript, контейнеризация кода может значительно упростить ваш рабочий процесс. Эта статья расскажет об основах разработки JavaScript внутри контейнеров Docker, а также предоставит практические советы и примеры.

Зачем использовать Docker для разработки JavaScript?

Есть множество причин, почему стоит рассмотреть Docker для вашей JavaScript разработки:

  • Стабильность среды: Разрабатывая в Docker, вы можете быть уверены, что ваше приложение будет работать одинаково на всех машинах.
  • Упрощенный процесс развертывания: Вы можете быстро развернуть ваше приложение в любой среде.
  • Изолированность: Docker позволяет избежать конфликтов версий библиотек и зависимостей.
  • Легкость в восстановлении: При проблемах вы можете быстро восстановить вашу среду разработки.

Теперь давайте углубимся в детали.

Установка и настройка Docker

Шаг 1: Установка Docker

Первый шаг - установить Docker на вашу машину. В зависимости от вашей операционной системы, процесс может немного отличаться. Для Windows и macOS доступны стандартные дистрибутивы Docker Desktop, которые включают в себя Docker Engine и Docker CLI. Пользователям Linux нужно будет установить Docker Engine вручную через пакетный менеджер.

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

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

# Берем официальный образ Node.js, версия LTS
FROM node:16

# Создаем директорию приложения
WORKDIR /usr/src/app

# Копируем package.json и package-lock.json в рабочую директорию
COPY package*.json ./

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

# Копируем код приложения
COPY . .

# Указываем порт, который будет использовать контейнер
EXPOSE 3000

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

Объяснение Dockerfile

  • FROM: Указывает базовый образ, от которого мы будем начинать. Здесь используется официальный образ Node.js.
  • WORKDIR: Устанавливает рабочую директорию внутри контейнера.
  • COPY: Копирует файлы из текущей директории на вашу машину в контейнер.
  • RUN: Выполняет команды в контейнере, здесь устанавливаются зависимости.
  • EXPOSE: Указывает, что контейнер прослушивает 3000 порт.
  • CMD: Определяет команду, которая будет выполняться при запуске контейнера.

Построение и запуск контейнера

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

Чтобы собрать Docker-образ, выполните следующую команду в терминале, находясь в директории с вашим Dockerfile:

docker build -t my-node-app .

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

После создания образа вы можете запустить контейнер:

docker run -p 3000:3000 -d my-node-app
  • -p 3000:3000: Это связывает порт 3000 на вашем компьютере с портом 3000 в контейнере.
  • -d: Запускает контейнер в фоновом режиме.

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

Теперь ваше приложение должно быть доступно по адресу http://localhost:3000. Если всё настроено правильно, вы увидите ваш JavaScript веб-сервер в работе.

Обработка изменений в коде

При каждом изменении кода вам необходимо пересобрать образ. Однако это может быть не очень удобным для активной разработки. К счастью, Docker может работать в связке с инструментами для "горячей" перезагрузки Node.js, такими как Nodemon.

Чтобы использовать Nodemon, внесите изменения в Dockerfile:

# Установите nodemon глобально
RUN npm install -g nodemon

# Замените CMD на:
CMD ["nodemon", "app.js"]

Оптимизация Docker-разработки

Использование Docker Compose

Docker Compose позволяет вам управлять многоконтейнерными приложениями. Вместо того чтобы запоминать длинные команды для запуска каждого контейнера, вы можете описать всё в одном файле docker-compose.yml.

Пример файла docker-compose.yml для JavaScript приложения:

version: '3'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/usr/src/app
    command: npm start

Объяснение Docker Compose файла

  • volumes: Связывает текущую директорию на вашей машине с рабочей директории внутри контейнера, так что изменения в файлах сразу же применяются.

Заключение

Контейнеризация JavaScript приложений с помощью Docker делает процесс разработки более предсказуемым и стабильным. Независимо от того, работаете ли вы над небольшим проектом или разрабатываете сложную систему, Docker поможет вам упростить развертывание, изоляцию и управление зависимостями. Благодаря Docker вы можете не беспокоиться о проблемах с совместимостью среды и сосредоточиться на создании качественного кода. С практическими примерами этой статьи вы теперь имеете достаточное руководство для начала работы с Docker в разработке JavaScript.

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

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