Gitlab CI和Docker结合部署Node App,项目启动监听后Pipeline一直处于running状态

我有一个Express项目,用的CI是Gitlab自带的Gitlab-ci。

选择的是runner是docker。 以下是配置信息

image: node:8.9.3

services:
  - mongo:latest

before_script:
  - npm install -g cnpm
  - npm install -g cross-env
  - cnpm --version

stages:
  - deploy

job-deploy-staging:
  stage: deploy
  script:
    - cnpm install
    - npm run prod
  tags:
    - express

当执行完npm run prod后,开始监听端口(项目正常启动),但是CI的pipeline的状态一直是running(为何不是结束?)

其他的一些问题
  1. 现在项目是运行在docker里的,监听的是docker的端口, 如何映射到主机的端口(让我访问主机就可以访问到应用)
  2. npm下载依赖会有问题(由于众所周知的原因,加了--registry也不行),所以有了那个cnpm install, 有没有什么好的解决办法?
  3. 配置.gitlab-ci.yml的时候,有个pull_policy选项,必须是一个hash, 但是pull_policy不就只能选择, 也就是我如果要配置成'if-not-present'就需要类似于这样:
pull_policy:
  - <key>: 'if-not-present'

但是这个key是什么? 官网的Ref里没有说。

第一次配置CI和Docker,问题有点儿多, 望见谅!
阅读 4k
1 个回答
  1. running 需要把你的Dockerfile文件贴出来才可以解答
  2. 端口映射,镜像启动的时候可以配置端口映射,类似于0.0.0.0:port:port2;其中port是主机监听端口,port2是你的node监听端口
  3. 下载依赖问题我是通过设置npmrc文件,这个文件里你可以set registry; 可以在dockerfile文件里echo进去
  4. 最后一个问题不清楚是什么意思。。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题