Fixing Error “failed, reason: getaddrinfo EAI_AGAIN” in Gitlab Builds
Some days ago, I detected some new errors in one of our builds pipelines. The interesting part is, that there were no changes done, that might have caused this error.
One example for this error was an DNS resolution error using npm:
#9 [4/5] RUN npm i npm@latest
#9 71.06 npm ERR! code EAI_AGAIN
#9 71.06 npm ERR! syscall getaddrinfo
#9 71.06 npm ERR! errno EAI_AGAIN
#9 71.06 npm ERR! request to https://registry.npmjs.org/npm failed, reason: getaddrinfo EAI_AGAIN registry.npmjs.org
#9 71.06
#9 71.06 npm ERR! A complete log of this run can be found in:
#9 71.06 npm ERR! /root/.npm/_logs/2023-02-10T08_30_43_730Z-debug-0.log
#9 ERROR: executor failed running [/bin/sh -c npm i npm@latest]: runc did not terminate sucessfully
After some digging, I found out, that the only update might have come with an updated docker build behaviour, since the docker image, used in this job is docker:latest.
Some Google queries later, I found an issue realted to this topic. It points to a blog post about a strange behaviour of docker in regards to DNS. But since, I had no issues before, I ruled out, that this might be the case here.
And indeed, a look in the latest release notes pointed out the obvious:
Alias
docker/cli#3314docker build
todocker buildx build
The easiest fix was to disable buildx alltogether via these ENV Vars:
build:
image: docker:latest
stage: build
variables:
DOCKER_BUILDKIT: 0
COMPOSE_DOCKER_CLI_BUILD: 0
services:
- docker:dind
before_script:
…
script:
…
After this change, the build job did run without any errors.