Gitlab runner 中 Docker 容器内的问题 运行 测试命令

Problem running test command inside Docker container in a Gitlab runner

我刚刚开始使用 docker 并持续集成 Gitlab。我已将以下 gitlab-ci.yml 文件添加到我的存储库的根目录中:

# Official docker image
image: docker:latest

services:
  - docker:dind

build-dev:
  stage: build
  script:
    - docker build -t obikerui/project -f app/Dockerfile.dev ./app

test:
  stage: test
  script:
    - docker run obikerui/project npm run test -- --coverage

build-dev 阶段运行并通过,但 test 阶段失败并显示以下错误消息:

$ docker run obikerui/project npm run test -- --coverage
Unable to find image 'obikerui/project:latest' locally
docker: Error response from daemon: pull access denied for obikerui/project, repository does not exist or may require 'docker login'.
See 'docker run --help'.
ERROR: Job failed: exit code 125

任何人都可以解释问题所在并提出修复建议吗?存储库是私有的,所以我需要提供一些额外的配置来适应这个吗?

每个作业 运行 在不同的容器中。您构建并正确标记了您的图像,但它保留在该容器中。

对于测试作业,一个新的容器启动并且该容器没有由上一个作业构建的图像。

您应该将您的图像推送到注册表(在您对其进行相应标记之后),然后测试作业应该使用存储库中的图像。

您可以使用 public 注册表,例如 Docker 提供的注册表,或者您可以 运行 基于图像 registry:2 的本地容器 docker =].在这种情况下,您必须确保指向注册表的域名在您的网络上可用(它可以是具有反向代理的 nginx)