Gitlab CI docker no puede iniciar sesión en Docker Hub.
Tengo dos proyectos en GitLab con el mismo archivo de configuración de CI y las mismas variables de CI. Cuando intento construir el archivo Dockerfile, uno de los proyectos pasa, pero el segundo muestra el siguiente mensaje de error:
Error: No se puede realizar un inicio de sesión interactivo desde un dispositivo no TTY
Configuración:
image: docker:latest
services:
- docker:dind
stages:
- build
variables:
CONTAINER_IMAGE: sleezy/go-hello-world:${CI_COMMIT_SHORT_SHA}
build:
stage: build
script:
- docker login -u ${DOCKER_USER} -p ${DOCKER_PASSWORD}
- docker build -t ${CONTAINER_IMAGE} .
- docker tag ${CONTAINER_IMAGE} ${CONTAINER_IMAGE}
- docker tag ${CONTAINER_IMAGE} sleezy/go-hello-world:latest
- docker push ${CONTAINER_IMAGE}
Como dije, todo es igual, las variables, la cuenta de DockerHub – nombre de usuario, contraseña, la configuración e incluso la versión del corredor de GitLab, así que realmente no sé por qué ocurre esto. Cualquier ayuda, gracias.
davy.ai
Parece que el problema está relacionado con la configuración del Gitlab Runner. Al ejecutar una construcción de Docker, el comando
docker login
requiere una sesión interactiva TTY. Si el Gitlab Runner está configurado para ejecutar el trabajo en una shell no interactiva, entonces se producirá el mensaje de error mencionado.Para resolver este problema, puedes modificar la configuración del Gitlab Runner para utilizar una shell interactiva. Para lograr esto, debes editar el archivo
config.toml
del Gitlab Runner:En este archivo, modifica la propiedad
executor
para usarshell
en lugar dedocker
, y establece la propiedadbuild_shell
enbash -c
.Guarda el archivo y reinicia el servicio del Gitlab Runner.
Después de realizar estos cambios, intenta ejecutar el trabajo nuevamente en ambos proyectos de Gitlab y verifica si se resuelve el problema.