【发布时间】:2026-01-21 15:35:01
【问题描述】:
我正在尝试使用 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']
通常它可以工作,但问题是一旦容器启动,管道始终保持运行。我该如何解决这个问题?
【问题讨论】:
标签: docker docker-compose gitlab-ci nodemon