Докеризация приложения 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 приложение, которое можно легко развернуть и масштабировать.
Спасибо за ваше время!