使用 gitlab cicd 使用 nodemon 部署 express

Posted

技术标签:

【中文标题】使用 gitlab cicd 使用 nodemon 部署 express【英文标题】:Deploy express with nodemon using gitlab cicd 【发布时间】:2021-05-20 08:45:52 【问题描述】:

我正在尝试使用 gitlab 管道在 AWS 上部署我的 express API。由于是开发服务器,所以通过nodemon管理服务器。

这是我的Dockerfile

FROM node:15 AS base

WORKDIR /usr/src/app

COPY . .

RUN npm i

FROM base AS production

RUN yarn build

这是docker-compose.yml

version: '3.8'
services: 
  api:
    container_name: api
    build:
      context: .
      dockerfile: Dockerfile
      target: base
      args:
        PORT: $PORT
    restart: always
    ports:
      - 80:$PORT
    command: yarn start:dev

这是.gitlab-ci.yml

image: node:latest

stages:
  - deploy-dev
  - start-dev

deploy_dev:
  stage: deploy-dev
  image: node
  before_script:
    - echo "???? Starting deployment [development mode]..."
    - 'which ssh-agent || (apt-get update -y && apt-get install openssh-client -y)'
    - eval $(ssh-agent -s)
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo "$KEY_DEV" > "$(pwd)/key.pem"
    - chmod 400 $(pwd)/key.pem
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
    - apt-get update -y
    - apt-get -y install rsync
  script:
    - ssh -T -i $(pwd)/key.pem user@$DEV
    - rsync -zvhr -auv --exclude 'node_modules' -e "ssh -T -i $(pwd)/key.pem" ./auth user@$DEV:/home/user/services
    - echo "???? Deployment completed..."
    - echo "???? Starting auth services..."
    - ssh -T -i $(pwd)/key.pem user@$DEV "cd ./services/auth/; docker-compose --env-file ./config/.development.env down; docker-compose --env-file ./config/.development.env up --build;"
  only: ['dev']

通常它可以工作,但问题是一旦容器启动,管道始终保持运行。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

尝试以分离模式运行 docker compose (docker-compose up --detach)。 这将导致容器在后台运行(非阻塞调用)。 更多信息可以在here找到。

【讨论】:

以上是关于使用 gitlab cicd 使用 nodemon 部署 express的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab-CICD最简单明了的入门教程

CICD GitLab的搭建与使用

使用gitlab cicd自动合并分支

我的docker随笔37:使用gitlab和jenkins实现CICD

我的docker随笔37:使用gitlab和jenkins实现CICD

GitLab CICD Day 02 - 什麼是 CICD