
getaddrinfo ENOTFOUND dans Docker et Node.js : solutions
getaddrinfo ENOTFOUND ou EAI_AGAIN malgré une entrée dans /etc/hosts ? Résolvez l’isolation DNS Docker, le binding Node.js et les erreurs libc.
Sommaire
- Comment corriger getaddrinfo ENOTFOUND dans Docker et Node.js
- Pourquoi votre application ignore votre fichier hosts local
- Tableau comparatif : ENOTFOUND vs EAI_AGAIN
- 1. Transmettre vos domaines hosts à Docker Compose
- 2. Forcer la priorité IPv4 dans Node.js
- 3. Détecter les caractères invisibles ou erreurs de syntaxe
- 4. Gérer les conteneurs Alpine Linux (musl libc)
L'erreur getaddrinfo ENOTFOUND (ou EAI_AGAIN) indique que la fonction système de résolution de noms de domaine n'a trouvé aucune adresse IP correspondant à l'hôte demandé. Cette erreur survient régulièrement dans les environnements conteneurisés (Docker) ou les applications Node.js/Go lorsqu'ils n'ont pas accès au fichier /etc/hosts de la machine hôte.
Comment corriger getaddrinfo ENOTFOUND dans Docker et Node.js
Pour corriger getaddrinfo ENOTFOUND, ajoutez la directive `extra_hosts` dans votre `docker-compose.yml` pour mapper vos domaines vers `host-gateway`, forcez l'ordre de résolution IPv4 dans Node.js avec `dns.setDefaultResultOrder('ipv4first')`, et vérifiez que votre ligne dans /etc/hosts ne comporte ni espace insécable ni protocole.
Pourquoi votre application ignore votre fichier hosts local
Lorsque vous modifiez /etc/hosts sur votre Mac ou votre PC Windows, ces entrées sont enregistrées pour votre système d'exploitation hôte uniquement.
Les 3 causes fréquentes d'erreur :
/etc/hosts virtuel. Les modifications faites sur l'hôte ne sont pas transmises au conteneur.127.0.0.1, l'appel système peut échouer..test locaux).Pour les détails sur Docker, lisez notre guide complet sur la gestion du fichier hosts avec Docker.
Tableau comparatif : ENOTFOUND vs EAI_AGAIN
| Code d'erreur | Signification exacte | Cause la plus fréquente | Action recommandée |
|---|---|---|---|
getaddrinfo ENOTFOUND | Nom d'hôte introuvable | Entrée absente dans le hosts du conteneur | Ajouter dans extra_hosts ou /etc/hosts |
getaddrinfo EAI_AGAIN | Échec temporaire de résolution (timeout) | Serveur DNS inaccessible ou proxy saturé | Vérifier le DNS upstream ou /etc/resolv.conf |
ECONNREFUSED | Résolution réussie mais port fermé | Serveur cible éteint | Démarrer l'application ou ouvrir le port |
1. Transmettre vos domaines hosts à Docker Compose
Pour qu'un conteneur puisse joindre vos domaines locaux déclarés sur votre machine hôte, utilisez extra_hosts :
version: '3.8'
services:
api:
build: .
extra_hosts:
- "auth.local.test:host-gateway"
- "services.local.test:host-gateway"
environment:
- AUTH_URL=http://auth.local.test:8080Sous Linux, si host-gateway n'est pas supporté par votre version de Docker Engine, vous pouvez utiliser l'adresse IP de l'interface bridge par défaut (172.17.0.1).
2. Forcer la priorité IPv4 dans Node.js
Si votre application Node.js fonctionne en dehors de Docker mais renvoie ENOTFOUND par intermittence, forcez le résolveur à tester IPv4 avant IPv6 :
Au début de votre point d'entrée (index.js ou server.js) :
import dns from 'node:dns';
// Force le traitement IPv4 en priorité
dns.setDefaultResultOrder('ipv4first');Vous pouvez également passer l'argument lors de l'exécution en ligne de commande :
node --dns-result-order=ipv4first server.jsConsultez aussi les différences entre 127.0.0.1 et localhost.
3. Détecter les caractères invisibles ou erreurs de syntaxe
Un fichier hosts mal encodé (par exemple avec un BOM UTF-8 ou des espaces insécables insérés lors d'un copier-coller) rend la ligne illisible pour la fonction C getaddrinfo.
Validez la résolution système avec les commandes natives :
Sur macOS :
dscacheutil -q host -a name auth.local.testSur Linux :
getent hosts auth.local.testSi la commande ne retourne aucune adresse IP alors que la ligne semble présente dans /etc/hosts, supprimez la ligne et réécrivez-la à la main avec une tabulation ou un espace standard :
127.0.0.1 auth.local.test
::1 auth.local.test4. Gérer les conteneurs Alpine Linux (musl libc)
Les images Docker basées sur Alpine Linux (node:alpine, golang:alpine) utilisent la bibliothèque musl au lieu de glibc. La résolution concurrente de requêtes A et AAAA peut provoquer des timeouts EAI_AGAIN.
Pour corriger ce comportement, ajoutez cette option dans votre conteneur :
# Dans votre Dockerfile :
RUN echo "options single-request-reopen" >> /etc/resolv.confQuestions fréquentes
Si votre application s’exécute dans un conteneur Docker, celui-ci possède son propre fichier /etc/hosts isolé et ne lit pas le fichier hosts de votre machine hôte.
ENOTFOUND indique que le nom d’hôte n’a pu être résolu vers aucune adresse IP (échec définitif). EAI_AGAIN signale une erreur temporaire ou un dépassement de délai (timeout) lors de l’interrogation du serveur DNS.
Ajoutez la section extra_hosts dans votre fichier docker-compose.yml en associant vos domaines à host-gateway.
Node.js et Axios appliquent un ordre de résolution IPv6/IPv4 conforme à la RFC 6724. Si votre hôte n’est déclaré qu’en IPv4, Node peut échouer sur la tentative IPv6 initiale.
Articles similaires
ERR_CONNECTION_REFUSED sur un domaine du fichier hosts : solutions
Votre domaine personnalisé dans le fichier hosts renvoie ERR_CONNECTION_REFUSED ? Vérifiez le port, le binding 0.0.0.0 vs 127.0.0.1, Docker et le reverse proxy.
Équipe Sleezr
Outils développeurs
EACCES: permission denied sur /etc/hosts : comment corriger
Corrigez l’erreur EACCES permission denied sur /etc/hosts en Node.js, bash et sous Windows. Droits root, sudoers, scripts CLI et solutions sécurisées.
Équipe Sleezr
Outils développeurs
Fichier hosts qui ne fonctionne pas ? Solutions Windows, Mac, Linux
Le fichier hosts est ignoré ou /etc/hosts ne s’applique pas ? Corrigez-le sous Windows, Mac et Linux : flush DNS, syntaxe, IPv6, fins de ligne, caches de résolveur et permissions.
Équipe Sleezr
Outils développeurs
Corriger DNS_PROBE_FINISHED_NXDOMAIN (2026)
Corrigez DNS_PROBE_FINISHED_NXDOMAIN dans Chrome et Edge : videz le DNS, vérifiez le fichier hosts, changez de serveurs DNS et videz le cache du navigateur.
Équipe Sleezr
Outils développeurs
NET::ERR_CERT_COMMON_NAME_INVALID et fichier hosts : solutions
Corrigez NET::ERR_CERT_COMMON_NAME_INVALID quand vous faites pointer un domaine avec le fichier hosts. mkcert, SAN, SSL local et HSTS expliqués.
Équipe Sleezr
Outils développeurs
ERR_TOO_MANY_REDIRECTS et fichier hosts : stopper la boucle
Boucle de redirection infinie (ERR_TOO_MANY_REDIRECTS) avec le fichier hosts ? Solutions pour WordPress, reverse proxy Nginx, HTTPS et cache 301.
Équipe Sleezr
Outils développeurs