npm install 后 Gitlab Shared Runner docker build

Posted

技术标签:

【中文标题】npm install 后 Gitlab Shared Runner docker build【英文标题】:Gitlab Shared Runner docker build after npm install 【发布时间】:2021-12-03 08:08:34 【问题描述】:

我正在尝试构建 docker 映像并推送到 gitlab 注册表。

我正在使用 gitlab-shared runner。

npm install 没有问题,但是如何在下一个作业中构建 docker 镜像?

image: node:14.17.3

stages:
  - install
  - build


install_dependencies:
  stage: install
  tags:
    - gitlab-org-docker
  script:
    - pwd
    - npm install

build-job:
  stage: build
  image: docker
  tags:
    - gitlab-org-docker
  script:
    - echo "Compiling the code..."
    - echo "build"
    - docker build -t bmw-frontend-app .
    - docker ps

我忘记了dind。 dind 表示 Docker 中的 Docker。

我成功如下。

image: docker:19.03.13

cache:
  key: $CI_COMMIT_REF_SLUG
  paths:
  - node_modules/
  - .next/

stages:
  - build

services:
  - docker:19.03.13-dind

build-job:
  stage: build
  before_script:
    - echo docker login $DOCKER_REGISTRY --username $DOCKER_REGISTRY_USER --password-stdin
  tags:
    - gitlab-org-docker
  script:
    - echo "Compiling the code..."
    - echo "build"
    - docker build -t registry.gitlab.com/areum.lee1/bmwgs_frontend . 
    - docker login registry.gitlab.com -u $DOCKER_REGISTRY_USER -p $DOCKER_REGISTRY_PASS
    - docker push registry.gitlab.com/areum.lee1/bmwgs_frontend

    我将外部图像修改为图像:docker:19.03.12 附加服务块。

【问题讨论】:

如果您提到 stage: install 中的 node_modules 为 stage: build,您可以尝试使用 cache (https://docs.gitlab.com/ee/ci/caching/)。我没有尝试过 dind 或 shared runner,但我认为它可以工作。 【参考方案1】:

您应该查看 GitLab 的有关使用 docker-in-docker 的文档,因为它有一个很棒的演练;在这种特殊情况下,您缺少实际执行 docker 命令的 dind 服务,这就是您收到连接错误的原因。

链接:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#docker-in-docker-with-tls-enabled

【讨论】:

谢谢我错过了dind。但是我试图在上面的文档中找到这个,但是我没有在这个问题上上传这个问题,并且在 npm install 之后我没有找到关于 docker build 的信息。我认为您没有关于 npm install 的经验。不是吗? 抱歉,马修,我在理解你的英语时遇到了一点问题,所以让我确保我理解你所问的问题:你并不是真的要问关于 @ 的问题987654322@,您实际上是想问如何在一项工作中运行npm install,然后在下一项工作中使用npm install 的结果?如果是这样,您应该检查您的 CI/CD 的 artifacts 关键字,该关键字将从您的作业中保存一组文件/目录,并在后续作业中将这些文件下载到同一位置。 谢谢帕特里克,我像上面一样解决了这个问题。我将图像从节点更改为 docker。

以上是关于npm install 后 Gitlab Shared Runner docker build的主要内容,如果未能解决你的问题,请参考以下文章

如何用gitbook写文档并存到github上

执行“npm install”后安装了太多 npm 模块

vue项目,npm install后,npm run dev报错问题

npm install完后启动失败报错修复后依然各种失败解决方案

npm install 在这么多警告后给出错误

在任何 npm install 命令之后挂钩(特别是安装后)