Heim >Datenbank >MySQL-Tutorial >Hier ist ein fragenbasierter Titel, der das Wesentliche des Artikels auf den Punkt bringt: Warum kann meine Django-App über Docker-Compose keine Verbindung zu MySQL in Docker herstellen? Hier sind einige andere Variationen: * Django zu MySQL

Hier ist ein fragenbasierter Titel, der das Wesentliche des Artikels auf den Punkt bringt: Warum kann meine Django-App über Docker-Compose keine Verbindung zu MySQL in Docker herstellen? Hier sind einige andere Variationen: * Django zu MySQL

Linda Hamilton
Linda HamiltonOriginal
2024-10-29 05:34:311111Durchsuche

Here's a question-based title that captures the essence of the article:

Why Can't My Django App Connect to MySQL in Docker Using Docker-Compose? 

Here are some other variations:

* Django to MySQL in Docker: Troubleshooting Connection Errors with dock

Django kann mit Docker-Compose nicht mit MySQL in Docker verbunden werden

Versuch, eine Verbindung zwischen Django und MySQL in einer Docker-Umgebung mit herzustellen docker-compose kann zu folgendem Fehler führen:

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

Lösung

Um dieses Problem zu beheben, muss unbedingt sichergestellt werden, dass der in der angegebene Port und Host angegeben ist Die Django-Einstellungsdatei stimmt mit der tatsächlichen Konfiguration in der Datei docker-compose.yml überein.

Schritte zur Behebung des Problems:

  1. Stellen Sie in „settings.py“ den Host auf „db“ und den Port auf „3306“ ein:

    • 'HOST': 'db',
    • 'PORT': '3306 ',
  2. Passen Sie die Datei docker-compose.yml an:

    • Stellen Sie sicher, dass der Port für den Datenbankdienst verfügbar ist ist 3306.
    • Verwenden Sie db als Host, wenn Sie die Django- und Datenbankdienste verknüpfen.
  3. Aktivieren Sie eine Prüfung auf offene Ports:

    • Fügen Sie einen zusätzlichen Befehl zu docker-compose.yml hinzu, um zu überprüfen, ob auf den angegebenen Port zugegriffen werden kann.

Beispiel für Docker-Compose .yml-Datei:

version: '3'

services:
  db:
    image: mariadb:5.5
    restart: always
    environment:
      - MYSQL_HOST=localhost
      - MYSQL_PORT=3306
      - MYSQL_ROOT_HOST=%
      - MYSQL_DATABASE=test
      - MYSQL_USER=belter
      - MYSQL_PASSWORD=belter_2017
      - MYSQL_ROOT_PASSWORD=123456_abc
    volumes:
      - /home/belter/mdbdata/mdb55:/var/lib/mysql
    ports:
      - "3302:3306"
  web:
    image: onlybelter/django_py35
    command: /bin/sh -c "python check_db.py --service-name mysql --ip db --port 3306"
    volumes:
      - .:/djcode

Zusätzliche Tipps:

  • Verwenden Sie db als Host, wenn Sie aus dem Django-Container heraus eine Verbindung zu MySQL herstellen (mit den Befehl mysql -h db -p ...).
  • Überprüfen Sie, ob 3306 verfügbar ist, indem Sie Folgendes ausführen: nmap -p 3306 localhost.
  • Überprüfen Sie, ob die Django- und Datenbankcontainer ordnungsgemäß ausgeführt werden : docker-compose ps.

Indem Sie diese Schritte befolgen, können Sie mit docker-compose eine stabile Verbindung zwischen Django und MySQL innerhalb einer Docker-Umgebung herstellen.

Das obige ist der detaillierte Inhalt vonHier ist ein fragenbasierter Titel, der das Wesentliche des Artikels auf den Punkt bringt: Warum kann meine Django-App über Docker-Compose keine Verbindung zu MySQL in Docker herstellen? Hier sind einige andere Variationen: * Django zu MySQL. 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