用Docker Hub使用GitLab CICD

问题描述 投票:0回答:1

我们正在尝试使用Docker Hub来存储GitLab CICD构建过程中生成和使用的镜像,但在使其正常工作方面遇到了一些问题。

我已经成功地推送了在CICD中构建的映像。build 阶段到Docker Hub,这很好用,行不通的是想再把它拉下来,为 rspec 阶段。我得到以下错误。

ERROR: Job failed: 工作失败。来自守护进程的错误响应:foxsoftzzz的拉动访问被拒绝,仓库不存在或可能需要 "docker登录":被拒绝:对资源的请求访问被拒绝(executor_docker.go:192:1s)。

我想假设这与我的登录凭证在试图拉下图像时没有被正确接收有关,但我不确定。如果您能提供任何帮助,我将感激不尽。

这是我的配置。

before_script:
  - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD"

.ruby_base:
  image: ruby:2.5.5
  before_script:
    - ruby -v

.docker_base:
  image: docker:stable
  services:
    - docker:stable-dind
    - postgres:9.6
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_DRIVER: overlay2
    DOCKER_TLS_CERTDIR: ""
    CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  before_script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD

stages:
  - build
  - test

build:images:
  extends: .docker_base
  stage: build
  script:
    - docker build -t $CONTAINER_TEST_IMAGE .
    - docker push $CONTAINER_TEST_IMAGE

test:rspec:
  before_script:
    - echo $CONTAINER_TEST_IMAGE
    - echo $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD
  image: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  stage: test
  services:
    - postgres:9.6
  variables:
    POSTGRES_DB: zzz_test
    DB_HOST: postgres
  script:
    - bundle exec rake db:create RAILS_ENV=test
    - bundle exec rake db:schema:load RAILS_ENV=test
    - bundle exec rspec --format html --out rspec/index.html --format documentation

我还设置了以下环境变量:

CI_REGISTRY_USER 我的docker hub用户名CI_REGISTRY_PASSWORD 我的docker hub令牌CI_REGISTRY_IMAGE 设置为 foxsoft/zzz (它的主机是 此处 - 虽然作为私人仓库,你将无法看到它)

谢谢你,我们正在尝试使用Docker Hub来存储GitLab CICD构建过程中生成并使用的镜像,但在使其正常工作方面遇到了一些问题。

docker gitlab-ci dockerhub
1个回答
0
投票

我已经解决了这个问题(我想),通过创建一个 "Docker Hub "来解决这个问题。DOCKER_AUTH_CONFIG 变量,并将其设置为以下内容。

{
   "auths":{
      "index.docker.io":{
         "auth":"HASHED_USERNAME_AND_PASSWORD"
      }
   }
}

这个... HASHED_USERNAME_AND_PASSWORD 值是通过在我的本地机器上运行以下命令生成的。

echo -n "docker_hub_username:docker_hub_security_token" | base64
© www.soinside.com 2019 - 2024. All rights reserved.