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.