Докеризация приложения Node и развертывание на Heroku

Предварительные условия

  • Node
  • npm
  • Docker

1. Создание приложения node.js

Сначала создадим простое приложение node.js(express), чтобы начать работу с express.

Создайте проект, выполнив npm init -y, и скопируйте и вставьте следующие строки в файл package.json.

{
  “name”: “heroku_docker”,
  “version”: “1.0.0”,
  “description”: “Deploy Dockerized NodeJS Image app on Heroku”,
  “main”: “index.js”,
  “scripts”: {
     “start”: “node index.js”,
     “dev”: “nodemon index.js”
  },
  “author”: “”,
  “license”: “ISC”,
  “dependencies”: {
    "dotenv": "^16.0.0",
    "express": "^4.18.1",
    "nodemon": "^2.0.16"
  }
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Создайте файл с именем index.js, который будет нашим экспресс-приложением, и добавьте следующие строки.

const express = require("express");
require("dotenv").config();
const PORT = process.env.PORT || 3000;
const app = express();
app.use("/", (req, res, next) => {
  res.send("Node JS backend is running");
});
app.listen(PORT, () => {
  console.log(`Server is listing on PORT : ${PORT}`);
});
Войти в полноэкранный режим Выйти из полноэкранного режима

Создайте файл .env и добавьте PORT

PORT=3000
Войти в полноэкранный режим Выйти из полноэкранного режима

Теперь попробуем запустить наше приложение в терминале,

$ npm install
$ npm start
Войти в полноэкранный режим Выйти из полноэкранного режима

Откройте браузер и введите localhost:3000

2. Настройка Dockerfile

Следующим шагом будет создание Dockerfile.

Если вы еще не установили docker в своей системе, зайдите сюда, чтобы скачать его.

Dockerfile: вы можете считать Dockerfile квитанцией — он содержит инструкции по созданию образа Docker.
Образ Docker: результат выполнения Dockerfile — это запускаемая единица.
Добавьте следующее в Dockerfile

FROM node:alpine
# CREATE APP DIRECTORY
RUN mkdir -p /app
WORKDIR /app
# INSTALL DEPENDENCIES
COPY package*.json ./
RUN npm install
COPY . .
# Exports
EXPOSE 3000
CMD ["npm","start"]
Войти в полноэкранный режим Выйти из полноэкранного режима

FROM node:alpine — Из узла базового образа, с вариантом alpine.

WORKDIR — Мы указываем, что в директории под названием app будет храниться наш проект. Если указанный каталог не существует в образе, он будет создан заново.

COPY package*.json ./— Мы копируем наши package.json и package-lock.json в наш рабочий каталог.

RUN npm install — Эта команда устанавливает зависимости, упомянутые в нашем package.json.

CMD ["npm", "start"] — Выполняет npm start, которая является командой для запуска нашего приложения.

3. Войдите в Heroku и создайте приложение

Выполните следующие команды для входа в Heroku и создания приложения на Heroku. Скопируйте название приложения Heroku.

$ heroku login
$ heroku container:login
$ heroku create
Войдите в полноэкранный режим Выйдите из полноэкранного режима

4. Соберите образ с помощью Dockerfile

Находясь в каталоге проекта, выполните следующую команду.

$ docker build -t registry.heroku.com/<HEROKU_APP_NAME>/web .
e.g docker build -t registry.heroku.com/heroku-docker01/web .
Войти в полноэкранный режим Выйти из полноэкранного режима

$ docker push registry.heroku.com/<HEROKU_APP_NAME>/web
e.g docker push registry.heroku.com/heroku-docker01/web
Войти в полноэкранный режим Выйти из полноэкранного режима

$ heroku container:release web -a <HEROKU_APP_NAME>
e.g heroku container:release web -a heroku-docker01
Войти в полноэкранный режим Выйти из полноэкранного режима

После выхода Image на heroku app нажмите на open app в heroku.

Github repo — https://github.com/Abdullah0332/heroku-docker

Счастливого обучения!!!

Оцените статью
devanswers.ru
Добавить комментарий