Login to GitLab container registry from CI

I’m using GitLab.com and trying to push an image to a different container repository under the same project group (on GitLab.com) and I’m having some issues logging in. I’ve setup the DOCKER_AUTH_CONFIG variable. Here’s my build step:

build:
  stage: build
  services:
    - docker:dind
  script:
    - docker login registry.gitlab.com
    - docker build -t registry.gitlab.com/<group>/<repo>:$CI_BUILD_REF_NAME -f Dockerfile .
    - docker push registry.gitlab.com/<group>/<project>:$CI_BUILD_REF_NAME

This fails like so:

$ docker login registry.gitlab.com
Error: Cannot perform an interactive login from a non TTY device

I’ve no idea why this doesn’t work, as I can echo out the env variable and it does in fact exist. Does anyone have some suggestions for why this is failing?

DOCKER_AUTH_CONFIG is not recognized by the docker command line client. It is recognized by the gitlab runner and is used when the runner tries to satisfy image: or service: requirements.

In your build script you will need to specify the credentials by providing the -u and -p options or writing out to .docker/config.json. See the docker login doc for details on the latter. If the docker login command isn’t given the credentials by either of these means it falls back to interactive prompts for the username and password which is why you are getting the error.

1 Like

Ahhhh okay this makes sense. Thank you! Thanks for the info!

I ended up re-structuring my project to not have to do this anymore, but this solution does work.

Hi @adamreid

I fall in to same page here and i am trying to do docker login to jfrog artifactory in pipeline , but it falls back to either default docker hub or tty error. In config.json i gave artifactory url and credentials

what would be missing ???