Привет, друзья! Сегодня я хочу поговорить с вами о том, как развернуть приложение, созданное с использованием Express.js, в Docker контейнере. Docker – это открытая платформа для автоматизации развертывания, доставки и запуска приложений. Он позволяет упаковывать приложения и все их зависимости в единую сущность – контейнер, который можно запускать на любой платформе, где установлен Docker.
Что нам понадобится
Перед тем, как начать, нам понадобятся следующие инструменты:
- Docker – его можно загрузить с официального сайта Docker;
- Node.js и NPM – чтобы разрабатывать приложение на Express.js;
- Опционально: Git – для управления версиями и выкладывания приложения на площадки;
- Редактор кода – любой по вашему выбору (например, VS Code).
Шаг 1: Создание Express.js приложения
Первым шагом я создам простое Express.js приложение. Для этого я установлю необходимые зависимости и создам файл server.js с основным кодом серверной части.
1.1 Установка Express.js
Откройте терминал и перейдите в папку, где хотите создать приложение. Затем выполните следующую команду:
$ npm install express
Это установит Express.js в ваш проект.
1.2 Создание основного кода сервера
Откройте редактор кода и создайте файл server.js. Вставьте следующий код:
// импортируем необходимые модули
const express = require('express');
// создаем экземпляр приложения Express.js
const app = express();
// добавляем маршрут "/"
app.get('/', (req, res) => {
res.send('Привет, мир!');
});
// запускаем сервер
app.listen(3000, () => {
console.log('Сервер запущен на порту 3000');
});
Теперь Express.js приложение готово к развертыванию!
Шаг 2: Создание Dockerfile
Далее создадим файл Dockerfile, который описывает настройки для создания Docker образа на основе нашего приложения.
2.1 Создание Dockerfile
Создайте файл Dockerfile в корневой папке проекта. Вставьте следующий код:
# создаем образ на основе Node.js
FROM node
# устанавливаем рабочую директорию
WORKDIR /app
# копируем package.json и package-lock.json
COPY package*.json ./
# устанавливаем зависимости
RUN npm install
# копируем остальные файлы проекта
COPY . .
# открываем порт 3000
EXPOSE 3000
# запускаем сервер Express.js
CMD ["node", "server.js"]
Этот файл определяет, что мы хотим создать образ на основе Node.js дистрибутива (инструкция FROM node
). Затем мы устанавливаем рабочую директорию и копируем файлы package.json и package-lock.json. После этого устанавливаем зависимости (инструкция RUN npm install
), копируем остальные файлы проекта и открываем порт 3000 (инструкция EXPOSE 3000
). В конце мы запускаем сервер Express.js командой CMD ["node", "server.js"]
.
2.2 Сборка Docker образа
Теперь мы можем создать Docker образ при помощи следующей команды:
$ docker build -t my-express-app .
Команда docker build
создает образ на основе Dockerfile в текущей директории, а опция -t
задает тег для образа. В нашем случае тегом будет my-express-app.
Шаг 3: Запуск контейнера
Наконец, мы можем запустить контейнер из созданного ранее Docker образа.
3.1 Запуск контейнера
Выполните следующую команду, чтобы запустить контейнер:
$ docker run -p 3000:3000 my-express-app
Команда docker run
запускает контейнер на основе указанного образа, а опция -p 3000:3000
пробрасывает порт 3000 из контейнера на хост машину.
Теперь вы можете открыть браузер и перейти по адресу http://localhost:3000, чтобы увидеть свое развернутое Express.js приложение!
Заключение
В этой статье мы рассмотрели, как развернуть Express.js приложение в Docker контейнере. Мы создали простое Express.js приложение, создали Dockerfile для описания настроек создания Docker образа, собрали Docker образ и запустили контейнер. Теперь ваше приложение можно легко развернуть на любой платформе, где установлен Docker.
Спасибо за внимание! Удачи в разработке!