Beim Versuch, von einer Go-Anwendung, die in Docker ausgeführt wird, eine Verbindung zu einem MySQL-Server herzustellen, kann es zu Problemen kommen der folgende Fehler:
dial tcp 127.0.0.1:3306: connect: connection refused
Ursache:
Standardmäßig werden Docker-Container in isolierten Netzwerkräumen ausgeführt, sodass es für darin ausgeführte Anwendungen unmöglich ist, direkt auf den Host zuzugreifen Der lokale Host der Maschine.
Lösung:
Um dieses Problem zu beheben, verwenden Sie den speziellen Hostnamen docker.for.mac.localhost anstelle von localhost. Diese Adresse ermöglicht die Kommunikation mit den Diensten des Host-Computers durch Verwendung des Docker-Netzwerks:
<code class="go">db, err = sql.Open("mysql", dbUser+":"+dbPassword+"@tcp(docker.for.mac.localhost:3306)/"+dbName)</code>
<code class="yml">ports: - "3306:3306"</code>
Dadurch wird der Port 3306 des Hostcomputers zugeordnet an den Port 3306 des Containers, sodass die Go-Anwendung eine Verbindung über den richtigen Port herstellen kann.
Das obige ist der detaillierte Inhalt vonWie kann ich von einer Go-Anwendung in Docker aus eine Verbindung zu einem MySQL-Server herstellen, wenn „Verbindung abgelehnt' auftritt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!