Maison  >  Article  >  base de données  >  Pourquoi mon application Django dans Docker Compose ne parvient-elle pas à se connecter à MySQL, même si j'ai le bon nom de port et de conteneur ?

Pourquoi mon application Django dans Docker Compose ne parvient-elle pas à se connecter à MySQL, même si j'ai le bon nom de port et de conteneur ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 02:10:29906parcourir

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

Dépannage de l'échec de la connexion Django-MySQL dans Docker Compose

Dans cet article, nous aborderons la question de l'établissement d'une connexion entre Django et MySQL dans les conteneurs Docker à l’aide de Docker Compose. Malgré la configuration des conteneurs comme indiqué dans la question, l'utilisateur rencontre l'erreur suivante :

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

Après un dépannage exhaustif, l'utilisateur a découvert la cause première et la solution. Voici les informations cruciales :

Points clés :

  • Vérifiez la cohérence du port : Assurez-vous que le numéro de port spécifié dans les paramètres de Django Le fichier correspond au numéro de port exposé par le conteneur MySQL. Dans ce cas, le port doit être 3306 et non 3302.
  • Utiliser le nom du conteneur pour HOST : Au lieu d'utiliser l'adresse IP du conteneur, spécifiez le nom du conteneur comme valeur HOST dans la base de données de Django configuration.

Configuration Docker Compose mise à jour :

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

Fichier de paramètres Django mis à jour :

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

Conseils supplémentaires :

  • Utilisez le script check_db.py pour vérifier que le port MySQL est ouvert avant d'exécuter Django.
  • Référez-vous au Dockerfile fourni pour la construction l'image Django-Py35.
  • Explorez plus de détails sur le référentiel GitHub de l'utilisateur pour des informations supplémentaires.

En implémentant ces modifications, l'utilisateur a réussi à établir la connexion entre Django et MySQL dans Docker conteneurs, résolvant l'erreur "Impossible de se connecter au serveur MySQL".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn