Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro ao fazer pull de imagem no docker

está dando erro abaixo quando tento fazer o build do projeto.

o build-docker executa com sucesso e o erro acontece no build-project, aparentemente no comando image: dfhonorato/minha-imagem:latest

Pulling docker image dfhonorato/minha-imagem:latest ... ERROR: Job failed: Error response from daemon: pull access denied for dfhonorato/minha-imagem, repository does not exist or may require 'docker login': denied: requested access to the resource is denied (docker.go:198:1s)

meu gitlab-ci.yml

image: docker:19.03.0

stages:
- pre-build
- build
- test
- deploy

build-docker:
  services:
  - docker:19.03.0-dind  

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

  stage: pre-build
  script: 
  - docker build -t minha-imagem .
  - docker tag minha-imagem dfhonorato/minha-imagem:latest
  - docker push dfhonorato/minha-imagem:latest

build-project:
  image: dfhonorato/minha-imagem:latest         
  services:
  - docker:19.03.0-dind
  - mysql:5.7  

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

  variables:
    MYSQL_USER: 'devops_dev'
    MYSQL_PASSWORD: 'mestre'
    MYSQL_DATABASE: 'todo_dev'
    MYSQL_ROOT_PASSWORD: 'senha'

    DB_NAME: 'todo_dev'
    DB_USER: 'devops_dev'
    DB_PASSWORD: 'mestre'
    DB_PORT: '3306'
    DB_HOST: 'mysql'
    SECRET_KEY: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

  stage: build
  tags:
  - executor-tarefas2
  dependencies:
  - build-docker
  script:
  - python manage.py makemigrations
  - python manage.py migrate

meu config.toml

concurrent = 1                                     
check_interval = 0                                 

[session_server]                                   
  session_timeout = 1800                           

[[runners]]                                        
  name = "runner-bytebank2"                        
  url = "https://gitlab.com/"                      
  token = "xxxxxxxxxxxxxxxxxxx"                   
  executor = "docker"                              
  environment = ["DOCKER_TLS_CERTDIR="]            
  [runners.custom_build_dir]                       
  [runners.cache]                                  
    [runners.cache.s3]                             
    [runners.cache.gcs]                            
  [runners.docker]                                 
    tls_verify = false                             
    image = "dfhonorato/minha-imagem:latest"       
    privileged = false                             
    disable_entrypoint_overwrite = false           
    oom_kill_disable = false                       
    disable_cache = false                          
    volumes = ["/cache"]                           
    shm_size = 0                                   

o que pode estar acontecendo? poderia verificar, por favor?

obrigado!!

3 respostas

Olá Daniel, tudo bem? Como o próprio GitLab indica o erro que está acontecendo é "access denied" ou seja acesso negado ao repositório dfhonorato/minha-imagem. Então entra na sua conta do DockerHub, verifica se a imagem está realmente lá, e também verifica novamente suas credencias do DockerHub no GitLab, verifica se não tem algum erro de escrita ou algo do tipo, e fala pra gente o resultado!

oi Jonilson,

depois de um tempo acabei lembrando que criei o repositório no DockerHub como privado. Para fazer o teste mudei para público e a partir daí passou a conseguir fazer o pull e executou o job sem problemas.

Dúvida: nesse caso, se eu mudar novamente para repositório privado, como devo proceder para poder acessar o repositório privado? Teria que mudar alguma coisa no gitlab-ci.yml?

obrigado! Daniel

solução!

Entendi, que legal que funcionou Daniel, porém é estranho, mesmo sendo privado, não era pra ter nenhum problema já que foi utilizou as credencias:

docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD

Com essa linha dentro do gitlab-ci.yml já é pra conseguir trabalhar com essas imagens privadas do Docker Hub, só se tiver algum erro no login, ou erro nas informações que são passadas para essas variáveis.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software