


Docker-Compose-Postgres-Verbindung abgelehnt: Behebung des Verbindungsproblems
In einem Docker-Compose-Setup mit Postgres haben Sie ein Problem beschrieben, bei dem Sie kann über pg-admin eine Verbindung zu Postgres herstellen, tritt jedoch beim Versuch, eine Verbindung von Go aus herzustellen, auf ein Verbindungsproblem.
Das Problem ergibt sich aus der Art und Weise, wie Sie in Ihrem Go-Code auf den Datenbank-Hostnamen verweisen. Sie verwenden POSTGRES_HOST als Postgres, den Container-/Dienstnamen für Postgres in Ihrer Docker-Compose-Konfiguration. In Ihrem Go-Code stellen Sie jedoch eine Verbindung zur Datenbank her, die der eigentliche Containername für den Datenbankdienst ist.
Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:
Option 1: Ändern Sie den Containernamen in Docker-Compose
Ändern Sie den Namen Ihres Datenbankdienstes in Ihrer docker-compose.yaml-Datei von „Datenbank“ in „Postgres“. Dadurch stimmen der Containername und der Hostname, den Sie in Ihrem Go-Code verwenden, überein.
Option 2: Feld für expliziten Hostnamen
Alternativ können Sie einen expliziten Hostnamen hinzufügen Feld zum Datenbankdienst in Ihrer Docker-Compose-Konfiguration:
database: build: database restart: always hostname: postgres
Dies setzt den Hostnamen des Datenbankcontainers auf postgres, Dies entspricht dem Hostnamen, auf den Sie in Ihrem Go-Code verweisen.
Zusätzliche Überlegungen
Darüber hinaus möchten Sie möglicherweise die Erstellung eines dedizierten Netzwerks innerhalb Ihrer Docker-Compose-Konfiguration in Betracht ziehen stellen sicher, dass Container sicher und effizient miteinander kommunizieren können. So geht's:
Fügen Sie in Ihrer docker-compose.yaml-Datei einen Abschnitt „Netzwerke“ zu jedem Dienst hinzu, der das dedizierte Netzwerk verwenden soll, etwa so:
database: # ... networks: - mynet backend: # ... networks: - mynet
Dann definieren Sie das Netzwerk am Ende Ihrer docker-compose.yaml-Datei:
networks: mynet: name: my-shared-db-network
Dadurch wird ein neues Netzwerk mit dem Namen erstellt my-shared-db-network, über das Ihre Container kommunizieren können.
Durch die Implementierung einer dieser Lösungen sollten Sie in der Lage sein, von Go aus innerhalb Ihres Docker-Compose-Setups erfolgreich eine Verbindung zu Ihrer Postgres-Datenbank herzustellen.
Das obige ist der detaillierte Inhalt vonWarum verweigert meine Go-Anwendung eine Verbindung zu meiner Docker Compose Postgres-Datenbank, obwohl pgAdmin erfolgreich eine Verbindung hergestellt hat?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In Go wird die Init -Funktion für die Paketinitialisierung verwendet. 1) Die Init -Funktion wird automatisch bei der Paketinitialisierung aufgerufen und ist geeignet, um globale Variablen zu initialisieren, Verbindungen zu setzen und Konfigurationsdateien zu laden. 2) Es kann mehrere Init -Funktionen geben, die in Dateireihenfolge ausgeführt werden können. 3) Bei der Verwendung sollten die Ausführungsreihenfolge, die Testschwierigkeit und die Leistungsauswirkungen in Betracht gezogen werden. 4) Es wird empfohlen, Nebenwirkungen zu reduzieren, die Abhängigkeitsinjektion zu verwenden und die Initialisierung zu verzögern, um die Verwendung von Init -Funktionen zu optimieren.

GO'SSelectstatementsTreamlinesConcurrentProgrammingByMultiplexingoperationen.1) ITallowswaitingonMultiPhanneloperationen, ExecutingTheFirstreadyone) TheDefaultCasepreventsDeadlocksByAntheProgramtoprosectroseverifnooperation.3) itcanpeusedefoursend

Contextandwaitgroupsarecrucialingoforminggoroutineseffektiv.1) contextAllowSsignalingCancellationanddeadlinesAcrossapiobears, Sicherstellung von Goroutinescanbesten

GoisbenficialformicroservicesDuetoitsSimplicity, Effizienz, Androbustconcurcysupport.1) GO'Sdesignemphesimplication und idealFormicroservices.2) seine Konzernmodelusings und ChannelsAllows -Handlings -Handlings -Handlings -Handlings -Handlings -Fassungen

GolangissidealforbuildingsCalablesSystemduetoitseffizienz und Konsumverkehr, whilepythonexcelsinquickScriptingandDataanalyseduetoitssimplication und VacevastEcosystem.golangsDesineScouragesCouragescournations, tadelcodedeanDitsGoroutaTinoutgoroutaTinoutgoroutaTinoutsGoroutinesGoroutinesGoroutsGoroutins, t

Golang ist in Gleichzeitigkeit besser als C, während C bei Rohgeschwindigkeit besser als Golang ist. 1) Golang erreicht durch Goroutine und Kanal eine effiziente Parallelität, die zum Umgang mit einer großen Anzahl von gleichzeitigen Aufgaben geeignet ist. 2) C über Compiler -Optimierung und Standardbibliothek bietet es eine hohe Leistung in der Nähe der Hardware, die für Anwendungen geeignet ist, die eine extreme Optimierung erfordern.

Gründe für die Auswahl von Golang umfassen: 1) Leistung mit hoher Genauigkeit, 2) statisches System, 3) Mechanismusmechanismus, 4) Reiche Standardbibliotheken und Ökosysteme, die es zu einer idealen Wahl für die Entwicklung einer effizienten und zuverlässigen Software machen.

Golang ist für schnelle Entwicklung und gleichzeitige Szenarien geeignet, und C ist für Szenarien geeignet, in denen extreme Leistung und Kontrolle auf niedriger Ebene erforderlich sind. 1) Golang verbessert die Leistung durch Müllsammlung und Parallelitätsmechanismen und eignet sich für die Entwicklung von Webdiensten mit hoher Konsequenz. 2) C erreicht die endgültige Leistung durch das manuelle Speicherverwaltung und die Compiler -Optimierung und eignet sich für eingebettete Systementwicklung.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver Mac
Visuelle Webentwicklungstools

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.
