【问题标题】:Problem running test command inside Docker container in a Gitlab runner在 Gitlab 运行器中的 Docker 容器内运行测试命令时出现问题
【发布时间】:2019-05-06 18:17:14
【问题描述】:

我刚刚开始使用 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

谁能解释发生了什么问题并提出修复建议?存储库是私有的,所以我需要提供一些额外的配置来适应这个吗?

【问题讨论】:

    标签: docker gitlab gitlab-ci gitlab-ci-runner


    【解决方案1】:

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

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

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

    您可以使用 Docker 提供的公共注册表,也可以根据 docker 提供的镜像 registry:2 运行本地容器。在这种情况下,您必须确保指向注册表的域名在您的网络上可用(可以是带有反向代理的 nginx)

    【讨论】:

    • 你也可以使用 GitLab 自带的 Docker 注册表 (cf.)。
    • 谢谢。正如@bellackn 评论的那样,我设法通过使用带有 Gitlab 的 Docker 注册表来让跑步者工作。
    猜你喜欢
    • 2020-03-29
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2019-10-19
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多