Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich eine lokale MySQL-Datenbank mit einem Docker-Container, ohne die Containerkonfiguration zu ändern?
Beim Übergang von Anwendungen in die Produktion mithilfe eines Docker-Setups besteht möglicherweise der Wunsch, die Verwendung von Containern zu vermeiden Datenbanken. In diesem Artikel wird erläutert, wie Sie eine lokal gehostete MySQL-Datenbank mit einer Anwendung verbinden, die in einem Docker-Container ausgeführt wird, ohne die Datenbankkonfiguration des Containers zu ändern.
Das bereitgestellte Docker-Compose Die .yml-Datei enthält einen Dienst namens „app-db“, der eine MySQL-Datenbank im Container initialisiert. So verbinden Sie die Anwendung stattdessen mit einer externen MySQL-Datenbank:
<code class="yaml">version: '3' services: web-app: build: context: . dockerfile: web-app/Dockerfile ports: - 8080:8080 environment: - MYSQL_HOST=host.docker.internal - MYSQL_PORT=3306 - MYSQL_USER=username - MYSQL_PASSWORD=password - MYSQL_DATABASE=database_name</code>
Bei Linux-Systemen sind Docker-Container von der Netzwerkkonfiguration des Hosts isoliert . Damit die Webanwendung die host.docker.internal-Adresse auflösen kann, muss der Container mit dem Parameter „--add-host host.docker.internal:host-gateway“ gestartet werden:
<code class="sh">docker run --add-host host.docker.internal:host-gateway ...</code>
This Der Parameter stellt sicher, dass der Container host.docker.internal in die IP-Adresse des Hosts auflösen kann.
Mit der geänderten docker-compose.yml- und Containerkonfiguration wird die Die Webanwendung sollte in der Lage sein, eine Verbindung zur lokal gehosteten MySQL-Datenbank herzustellen, wie in den Umgebungsvariablen angegeben.
Das obige ist der detaillierte Inhalt vonWie verbinde ich eine lokale MySQL-Datenbank mit einem Docker-Container, ohne die Containerkonfiguration zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!