使用 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的主要内容,如果未能解决你的问题,请参考以下文章
我的docker随笔37:使用gitlab和jenkins实现CICD