Heim  >  Artikel  >  Datenbank  >  Warum kann meine Django-App in Docker Compose keine Verbindung zu MySQL herstellen, obwohl ich den richtigen Port- und Containernamen habe?

Warum kann meine Django-App in Docker Compose keine Verbindung zu MySQL herstellen, obwohl ich den richtigen Port- und Containernamen habe?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 02:10:29906Durchsuche

Why is my Django app in Docker Compose unable to connect to MySQL, even though I have the correct port and container name?

Fehlerbehebung bei fehlgeschlagener Django-MySQL-Verbindung in Docker Compose

In diesem Artikel befassen wir uns mit dem Problem des Herstellens einer Verbindung zwischen Django und MySQL innerhalb von Docker-Containern mit Docker Compose. Obwohl der Benutzer die Container wie in der Frage beschrieben konfiguriert hat, tritt der folgende Fehler auf:

django.db.utils.OperationalError: (2003, 'Can\'t connect to MySQL
  server on \'mariadb55\' (111 "Connection refused")')

Nach umfassender Fehlerbehebung hat der Benutzer die Grundursache und die Lösung gefunden. Hier sind die entscheidenden Erkenntnisse:

Wichtige Punkte:

  • Portkonsistenz überprüfen:Stellen Sie sicher, dass die Portnummer in den Django-Einstellungen angegeben ist Die Datei entspricht der vom MySQL-Container bereitgestellten Portnummer. In diesem Fall sollte der Port 3306 und nicht 3302 sein.
  • Containernamen für HOST verwenden: Anstatt die IP-Adresse des Containers zu verwenden, geben Sie den Containernamen als HOST-Wert in der Django-Datenbank an Konfiguration.

Aktualisierte Docker Compose-Konfiguration:

services:
  db:
    ...
    ports:
      - "3302:3306"
  web:
    ...
    command: python3 manage.py runserver 0.0.0.0:6001
    ...
    volumes:
      - .:/djcode
    ports:
      - "6001:6001"
    depends_on:
      - db

Aktualisierte Django-Einstellungsdatei:

DATABASES = {
    'default': {
        ...
        'HOST': 'db',
        'PORT': '3306',
        ...
    }
}

Zusätzliche Tipps:

  • Verwenden Sie das Skript check_db.py, um zu überprüfen, ob der MySQL-Port geöffnet ist, bevor Sie Django ausführen.
  • Beziehen Sie sich zum Erstellen auf die bereitgestellte Docker-Datei das Django-Py35-Image.
  • Erkunden Sie weitere Details im GitHub-Repository des Benutzers, um zusätzliche Einblicke zu erhalten.

Durch die Implementierung dieser Änderungen stellte der Benutzer erfolgreich die Verbindung zwischen Django und MySQL in Docker her Containern, wodurch der Fehler „Verbindung zum MySQL-Server kann nicht hergestellt werden“ behoben wird.

Das obige ist der detaillierte Inhalt vonWarum kann meine Django-App in Docker Compose keine Verbindung zu MySQL herstellen, obwohl ich den richtigen Port- und Containernamen habe?. 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