Day12-Express 的部署

Express

利用 pm2 做管理(因为 docker 坑很深 加上来的话会写不完)

Express 是会执行一个 Process 常驻

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.json({title: 'Hello World!'})
})

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

最简单的一个 hello world 的程序

如果在 local 端跑起来可以用浏览器打开 http://localhost:3000

就会看到 Hello World!

ecosystem.config.js

module.exports = {
  apps: [
    {
      name: 'express-demo',
      script: 'app.js',
      watch: '.',
      env: {
        NODE_ENV: 'development',
      },
    },
  ],
};

gitlab-ci.yml

stages:
  - deployExpress

image: gitlab/dind
services:
  - docker:dind

deployExpress:
  stage: deployExpress
  tags:
    - self-runner
  only:
      - deployDev
  script:
    - yarn install
    - cp "${DEV_ENV}" .env
    - pm2 delete ecosystem.config.js
    - pm2 start ecosystem.config.js

这是最简单的范例

  • tags - custome runner
    直接在 server 安装 runner

这样直接部署比较简单

单一程序基本上就可以跑起来了

但是如果是有很多个 Process 需要管理

可能就是另一个管理的篇章

这次都只会讲到最基础的部署逻辑

在 gitlab 上的sidebar 看 CI\CD 就可以看到工作状态

如果是 pass的话

利用浏览器打开 http://${ip}:3000

就可以看到 Hello World! 的文字

这时候就可以补上其他 route

可以达成最基础的 API 部署实作


<<:  [13] [烧瓶里的部落格] 03. Blueprints 和 View function

>>:  Day12. 一起动手做弹珠台!(2)

AI ninja project [day 8] 文字转语音

除了有语音转文字的服务, GCP 也提供了文字转语音的服务。 可以想像过去我们在游戏或是动画中需要很...

[Day 22]从零开始学习 JS 的连续-30 Days---阵列操作介绍 (下篇)

阵列操作介绍 (下篇) 介绍四种阵列运用: map filter find findlndex 3....

DAY 20:Adapter Pattern,统一不同产品的介面

Creational 建立相关的 patterns 已经告一段落,接下来要进入 Structural...

Day 1 初探Flutter

前言 大家好,我是辅大大三的学生,由於课程所需让我接触到铁人赛,因此我和同学一起组队参加,首先谢谢大...

Day18:SwiftUI Picker

前言 SwiftUI Picker 可以让我们自行选择项目, 也可以选择不同的呈现方式, 这篇文章来...