在GitLab CI中为Node.js应用程序构建Docker映像

时间:2019-01-19 22:15:10

标签: node.js docker gitlab gitlab-ci

我正在开发一个Node.js应用程序,其当前的Dockerfile如下所示:

# Stage 0
# =======
FROM node:10-alpine as build-stage

WORKDIR /app

COPY package.json yarn.lock ./
RUN yarn install

COPY . ./
RUN yarn build

# Stage 1
# =======
FROM nginx:mainline-alpine

COPY --from=build-stage /app/build /usr/share/nginx/html

我想将其集成到GitLab CI管道中,但是我不确定我是否有基本想法。到目前为止,我知道我需要创建一个.gitlab-ci.yml文件,以后再由GitLab提取。

我的基本想法是:

  1. 我将代码更改推送到GitLab。
  2. GitLab基于我的Dockerfile构建一个新的Docker映像。
  3. GitLab将新创建的映像推送到“生产”服务器(稍后)。

所以我的问题是:
然后,我的.gitlab-ci.yml应该包含类似build的工作,它会触发...什么? docker build命令?还是我需要将Dockerfile内容“复制”到CI文件?

2 个答案:

答案 0 :(得分:2)

GitLab CI在Runners中执行需要使用生成的令牌(Settings / CI CD / Runners)将其注册到项目中的管道。您也可以将Shared Runners用于多个项目。管道是使用.gitlab-ci.yml文件配置的,并且在仓库中完成某些操作(推送到分支,合并请求等)后,您可以使用yaml文件build, test, push and deploy docker images

  

当您的应用程序已经具有可用于   可用于创建和测试图像

因此,基本上,您需要安装运行程序,将其注册为项目的令牌(或使用共享运行程序)并配置CI yaml文件。推荐的方法是docker in docker,但要由您决定。您还可以检查this basic example。最后,您可以将容器直接部署到Kubernetes,Heroku或Rancher中。请记住,在“设置/变量”中安全地配置您的凭据和机密。

结论

GitLab CI很棒,但是我建议您首先考虑一下要使用的git工作流程,以便在.gitlab-ci.yml文件中设置阶段。这将允许您将节点项目配置为管道,然后可以轻松导出到其他工具,例如Jenkins管道或Travis。

答案 1 :(得分:0)

构建作业触发器:

选项1:  在作业中添加when: manual,您可以在CI / CD>管道

中通过手动运行该作业

选项2:

only:
    - <branchname>

在这种情况下,当您进入定义的分支时,作业开始 (这是我个人的建议)

选项3: 添加nothin”,每次按下代码时作业就会运行

您可以结合上面的选项。

此外,可以通过使用作业令牌将作业与Web请求一起显示。

docker build命令将在管道中运行。我认为在脚本部分。 要求gitlab-runner上的docker引擎来接班。

  

还是我需要将Dockerfile内容“复制”到CI文件?