将Node.js应用程序部署到Heroku
#node #heroku

这篇文章涵盖了设置Heroku CLI工具到使用GitHub Action的CI/CD管道的主要注释。

先决条件

  • 运行以下命令安装CLI工具
curl https://cli-assets.heroku.com/install.sh | sh
  • 如果您已经有一个帐户,创建帐户或登录
heroku login

节点服务器

  • 运行软件包设置的以下命令
npm init -y
npm i express
  • 写基本服务器
// server.js
const express = require('express');
const app = express();
const PORT = process.env.PORT || 8080;

app.get('/', (_, res) => res.send('Hello world'));

app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
  • 配置start脚本
// package.json
{
  "scripts": {
    "start": "node server.js"
  }
}

项目设置

以下命令将创建一个带有提供名称的项目。项目URL将为<PROJECT_NAME>.herokuapp.com

heroku create -a <PROJECT_NAME>
git init
heroku git:remote -a <PROJECT_NAME>

创建一个带有命令以启动服务器的procfile。

# Procfile
web: npm start

环境变量

以下命令可用于设置提供的环境变量并重新启动服务器,显示已设置变量的列表,删除提供的变量并重新启动服务器,然后将SET变量附加到本地文件(.env案件)。 Heroku将设置服务器端口的环境变量(PORT)。

heroku config:set VARIABLE_NAME=value
heroku config
heroku config:remove VARIABLE_NAME
heroku config -s >> .env

插件

以下命令添加并删除指定的附加组件。

heroku addons:create <ADDON_NAME>
heroku addons:remove <ADDON_NAME>

数据库

Redis

运行以下命令以配置REDIS数据库。 Heroku将设置数据库连接的环境变量。

heroku addons:create upstash-redis:free

Postgres

运行以下命令来引导Postgres数据库。

heroku addons:create heroku-postgresql

上一个命令将在DATABASE_URL环境变量中设置数据库连接字符串。

使用以下命令检查数据库信息。

heroku pg:info

procefile中的释放命令可以运行迁移。

# Procfile
release: npm run migrate

以下命令创建数据库备份,检查最后备份的进度,并显示上一个备份的列表。

heroku pg:backups:capture
heroku pg:backups:info
heroku pg:backups

调试

  • 获取实时日志
heroku logs --tail
  • 获取特定数量的日志行
heroku logs -n 20
  • 获取有关应用程序的信息
heroku info
  • 获取项目状态以检查是否有任何问题
heroku status
  • 在App Dyno上运行bash
heroku run bash
  • 重新启动应用程序
heroku restart

部署

手动部署

通过以下命令部署并打开部署版本。

git add .
git commit -m "Initial commit"
git push origin master
heroku open

如果在浏览器中打开项目的命令在Linux的Windows子系统中不起作用,请在相应的Shell配置文件(例如~/.zshrc)中设置BROWSER环境

export BROWSER=wslview

CI/CD管道

在部署方法页面上将应用程序与github连接,并启用CI和自动部署。

添加.github/workflows/config.yml文件,其中包括CI管道的以下配置。

name: CI pipeline

on:
  push:
    branches:
      - master

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    container: node:18.12.1-alpine3.15

    steps:
      - name: Github checkout
        uses: actions/checkout@v3

      - uses: actions/setup-node@v3
        with:
          node-version: 18

      - run: npm ci

      - run: npm run lint

      - run: npm test

      - run: npm audit

选择