Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich eine lokale MySQL-Datenbank mit einem Docker-Container, ohne die Containerkonfiguration zu ändern?

Wie verbinde ich eine lokale MySQL-Datenbank mit einem Docker-Container, ohne die Containerkonfiguration zu ändern?

Barbara Streisand
Barbara StreisandOriginal
2024-10-29 16:36:02913Durchsuche

How to Connect a Local MySQL Database to a Docker Container Without Changing Container Configuration?

Verbinden einer lokalen MySQL-Datenbank mit einem Docker-Container

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.

Ändern von docker-compose.yml

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:

  1. Entfernen Sie den Dienst „app-db“ aus der Datei docker-compose.yml.
  2. Fügen Sie einen Abschnitt „Umgebung“ hinzu der „Web-App“-Dienst, in dem die Datenbankverbindungsdetails angegeben werden:
<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>

Host-Auflösung sicherstellen

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.

Herstellen einer Verbindung zur externen Datenbank

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn