鍍金池/ 問答/Linux  HTML/ Gitlab CI和Docker結(jié)合部署Node App,項目啟動監(jiān)聽后Pipe

Gitlab CI和Docker結(jié)合部署Node App,項目啟動監(jiān)聽后Pipeline一直處于running狀態(tài)

我有一個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

當(dāng)執(zhí)行完npm run prod后,開始監(jiān)聽端口(項目正常啟動),但是CI的pipeline的狀態(tài)一直是running(為何不是結(jié)束?)

其他的一些問題
  1. 現(xiàn)在項目是運行在docker里的,監(jiān)聽的是docker的端口, 如何映射到主機(jī)的端口(讓我訪問主機(jī)就可以訪問到應(yīng)用)
  2. npm下載依賴會有問題(由于眾所周知的原因,加了--registry也不行),所以有了那個cnpm install, 有沒有什么好的解決辦法?
  3. 配置.gitlab-ci.yml的時候,有個pull_policy選項,必須是一個hash, 但是pull_policy不就只能選擇, 也就是我如果要配置成'if-not-present'就需要類似于這樣:
pull_policy:
  - <key>: 'if-not-present'

但是這個key是什么? 官網(wǎng)的Ref里沒有說。

第一次配置CI和Docker,問題有點兒多, 望見諒!
回答
編輯回答
乞許
  1. running 需要把你的Dockerfile文件貼出來才可以解答
  2. 端口映射,鏡像啟動的時候可以配置端口映射,類似于0.0.0.0:port:port2;其中port是主機(jī)監(jiān)聽端口,port2是你的node監(jiān)聽端口
  3. 下載依賴問題我是通過設(shè)置npmrc文件,這個文件里你可以set registry; 可以在dockerfile文件里echo進(jìn)去
  4. 最后一個問題不清楚是什么意思。。
2018年1月29日 10:01