Lösung des Fehlers getaddrinfo ENOTFOUND beim Verbinden mit Docker auf GitLab CI
Автор: vlogize
Загружено: 2025-12-09
Просмотров: 0
Erfahren Sie, wie Sie den Fehler `getaddrinfo ENOTFOUND` in GitLab CI für Ihre Docker-Konfiguration beheben und eine erfolgreiche Datenbankverbindung für Ihre End-to-End-Tests sicherstellen.
---
Dieses Video basiert auf der Frage https://stackoverflow.com/q/62142038/ gestellt von dem Nutzer 'TLd' ( https://stackoverflow.com/u/5453030/ ) sowie auf der Antwort https://stackoverflow.com/a/62272454/ bereitgestellt von dem Nutzer 'TLd' ( https://stackoverflow.com/u/5453030/ ) auf der Website 'Stack Overflow'. Vielen Dank an diese großartigen Nutzer und die Stackexchange-Community für ihre Beiträge.
Besuchen Sie diese Links, um den Originalinhalt und weitere Details zu sehen, z. B. alternative Lösungen, aktuelle Entwicklungen zum Thema, Kommentare, Versionsverlauf usw. Der ursprüngliche Titel der Frage lautete beispielsweise: Unable to connect to docker on gitlab CI
Außerdem steht der Inhalt (außer Musik) unter der Lizenz CC BY-SA https://meta.stackexchange.com/help/l...
Der ursprüngliche Fragenbeitrag steht unter der Lizenz 'CC BY-SA 4.0' ( https://creativecommons.org/licenses/... ), und der ursprüngliche Antwortbeitrag steht unter der Lizenz 'CC BY-SA 4.0' ( https://creativecommons.org/licenses/... ).
Falls Ihnen irgendetwas auffällt oder Unstimmigkeiten bestehen, schreiben Sie mir bitte an vlogize [AT] gmail [DOT] com.
---
Titel: Verbindung zu Docker auf GitLab CI: Lösung des Fehlers getaddrinfo ENOTFOUND
Beim Einsatz von Docker zur Durchführung von End-to-End-Tests auf GitLab CI können Entwickler gelegentlich Probleme beim Verbindungsaufbau zu ihren Datenbanken feststellen. Ein häufiger Fehler in diesem Zusammenhang ist der getaddrinfo ENOTFOUND-Fehler, der darauf hinweist, dass die Anwendung, die innerhalb des Docker-Containers läuft, den Hostnamen der Datenbank nicht auflösen kann. In diesem Blogpost erklären wir die Ursache dieses Problems und stellen eine effektive Lösung vor.
Verständnis des Problems
In Ihrer ursprünglichen Konfiguration waren Ihre End-to-End-Tests in einer docker-compose-Datei sowie in einer GitLab CI YAML-Datei definiert. Die Tests verwendeten verschiedene Umgebungsvariablen, darunter den Datenbank-Host. Trotz korrekter Umgebungsparameter konnte Ihr Node.js-Server jedoch keine Verbindung zur PostgreSQL-Datenbank herstellen.
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Diese Fehlermeldung zeigt an, dass die Anwendung den angegebenen Hostnamen host.docker.internal nicht finden kann, während sie versucht, sich über Port 5432 mit der Datenbank zu verbinden. Dies geschieht häufig durch ein Missverständnis hinsichtlich der Funktionsweise der DNS-Auflösung im Docker-Netzwerk und der CI-Umgebung.
Lösung: Aktualisierung Ihrer Umgebungsvariablen
Die Lösung dieses Problems ist einfach: Sie müssen den Datenbank-Host in Ihren Umgebungsvariablen korrekt konfigurieren und interne Servicenamen innerhalb des Docker-Netzwerks verwenden. So gehen Sie vor:
Überarbeitete Umgebungsvariablen
Ändern Sie Ihre .env-ci-Datei, um den internen Docker-Servicenamen anstelle von host.docker.internal zu verwenden. Hier die angepasste Variablendefinition:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Wesentlicher Unterschied:
Ersetzen von DB_HOST=host.docker.internal durch DB_HOST=db: Das bezieht sich auf den Datenbankdienst, der in Ihrer docker-compose-Konfiguration definiert ist, was eine direkte Kommunikation zwischen API und Datenbank innerhalb des Docker-Netzwerks ermöglicht.
Aktualisierte Docker Compose Datei
Stellen Sie außerdem sicher, dass Ihre docker-compose-Datei korrekt eingerichtet ist. Sie sollte folgendermaßen aussehen:
[[Siehe Video, um diesen Text oder Codeausschnitt anzuzeigen]]
Wesentliche Änderungen:
Beide Services verwenden dasselbe Docker-Netzwerk (mit dem Namen main), sodass die API den Datenbankdienst über dessen Namen auflösen kann.
Fazit
Mit diesen Anpassungen Ihrer Umgebungsvariablen und der Docker-Konfiguration sollten Sie in der Lage sein, den Fehler getaddrinfo ENOTFOUND zu beheben und Ihre Node.js-Anwendung während der GitLab CI Tests erfolgreich mit Ihrer PostgreSQL-Datenbank zu verbinden.
Viel Erfolg beim Programmieren! Sollten Sie weitere Probleme haben oder Fragen auftauchen, schreiben Sie diese gerne in die Kommentare unten. Gemeinsam meistern wir die Herausforderungen von Docker- und CI-Setups.
Доступные форматы для скачивания:
Скачать видео mp4
-
Информация по загрузке: