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

在GitLab CI中为Node.js应用程序构建Docker映像,node.js,docker,gitlab,gitlab-ci,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-st

我正在使用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将获取该文件

我的基本想法是:

我将代码更改推送到GitLab。 GitLab基于我的Dockerfile构建一个新的Docker映像。 GitLab稍后将这个新创建的映像推送到生产服务器。 所以,我的问题是: My.gitlab-ci.yml应该包含类似于生成作业的内容,它会触发。。。什么docker构建命令?还是需要将Dockerfile内容复制到CI文件?

生成作业触发器:

备选案文1: 在作业中添加when:manual,您可以在CI/CD>管道中手动运行作业

备选案文2:

在这种情况下,作业将在推入定义的分支时启动 这是我个人的建议

备选案文3: 不添加任何内容,每次推送代码时作业都将运行

当然,您可以组合上述选项

此外,通过使用作业令牌,可以使用web请求启动作业

docker build命令将在管道中工作。我认为在脚本部分。 选择作业的gitlab runner上的需求docker引擎

还是需要将Dockerfile内容复制到CI文件

无生成作业触发器:

备选案文1: 在作业中添加when:manual,您可以在CI/CD>管道中手动运行作业

备选案文2:

在这种情况下,作业将在推入定义的分支时启动 这是我个人的建议

备选案文3: 不添加任何内容,每次推送代码时作业都将运行

当然,您可以组合上述选项

此外,通过使用作业令牌,可以使用web请求启动作业

docker build命令将在管道中工作。我认为在脚本部分。 选择作业的gitlab runner上的需求docker引擎

还是需要将Dockerfile内容复制到CI文件


GitLab CI在中执行需要使用生成的令牌设置/CI CD/Runner注册到项目中的管道。您还可以用于多个项目。管道是用.gitlab-ci.yml文件配置的,当在repo push-to分支、合并请求等中完成某些操作时,您可以使用yaml文件

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

因此,基本上您需要安装runner,使用项目的令牌注册它,或者使用共享runner并配置CI yaml文件。推荐的方法是,但这取决于你。你也可以查一下。最后,您可以将容器直接部署到Kubernetes或Rancher中。请记住在设置/变量中安全配置凭据和机密

结论


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

GitLab CI在中执行管道,该管道需要使用生成的令牌设置/CI CD/Runner注册到项目中。您还可以用于多个项目。管道是用.gitlab-ci.yml文件配置的,当在repo push-to分支、合并请求等中完成某些操作时,您可以使用yaml文件

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

因此,基本上您需要安装runner,使用项目的令牌注册它,或者使用共享runner并配置CI yaml文件。推荐的方法是,但这取决于你。你也可以查一下。最后,您可以将容器直接部署到Kubernetes或Rancher中。请记住在设置/变量中安全配置凭据和机密

结论

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

only:
    - <branchname>