Herstellen einer Verbindung zu einer lokal gehosteten MySQL-Datenbank aus einem Docker-Container
Beim Übergang einer Anwendung zur Produktion ist es wünschenswert, die Verwendung des Containers zu vermeiden. gehostete Datenbank. In diesem Artikel wird beschrieben, wie Sie mithilfe von Docker Compose eine lokale MySQL-Datenbank mit einer Anwendung verbinden, die in einem Container ausgeführt wird.
Docker Compose-Konfiguration
Ihre bereitgestellte Docker Compose-Konfiguration demonstriert die Verwendung eines separaten „app-db“-Dienstes für die MySQL-Datenbank. Um stattdessen eine Verbindung zu einer lokalen MySQL-Datenbank herzustellen, passen Sie Ihre Compose-Datei wie folgt an:
<code class="yaml">version: '3' services: web-app: ... app-db: image: mysql:8 environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_DATABASE=<database-name> ports: - 3306:3306</code>
Verbindung über Hostnamen herstellen
Anstatt „localhost“ zu verwenden, was sich auf bezieht Verwenden Sie für den internen Hostnamen des Containers „host.docker.internal“. Dies wird in die IP-Adresse des Docker-Hosts aufgelöst, sodass Sie eine Verbindung zu Ihrer lokalen Datenbank herstellen können.
Linux-Konfiguration
Fügen Sie für Linux-Systeme den folgenden Parameter hinzu, wenn Sie Docker starten Container:
<code class="bash">--add-host host.docker.internal:host-gateway</code>
Beispielverwendung
Ersetzen Sie in Ihrer Webanwendung die Datenbankverbindungsinformationen, um „host.docker.internal“ anstelle von „localhost“ zu verwenden. Zum Beispiel:
db = mysql.connector.connect( host="host.docker.internal", ... )
Durch die Implementierung dieser Änderungen können Sie Ihre lokale MySQL-Datenbank erfolgreich mit Ihrer Anwendung verbinden, die in einem Docker-Container ausgeführt wird.
Das obige ist der detaillierte Inhalt vonWie kann ich von einem Docker-Container aus eine Verbindung zu einer lokal gehosteten MySQL-Datenbank herstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!