Maison  >  Article  >  base de données  >  Voici un titre basé sur des questions qui capture l'essence de l'article : Pourquoi mon application Django ne peut-elle pas se connecter à MySQL dans Docker à l'aide de Docker-Compose ? Voici quelques autres variantes : * Django vers MySQL

Voici un titre basé sur des questions qui capture l'essence de l'article : Pourquoi mon application Django ne peut-elle pas se connecter à MySQL dans Docker à l'aide de Docker-Compose ? Voici quelques autres variantes : * Django vers MySQL

Linda Hamilton
Linda Hamiltonoriginal
2024-10-29 05:34:311065parcourir

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

Impossible de connecter Django à MySQL dans Docker à l'aide de Docker-Compose

Tentative d'établissement d'une connexion entre Django et MySQL dans un environnement Docker à l'aide docker-compose peut entraîner l'erreur suivante :

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

Solution

Pour résoudre ce problème, il est crucial de s'assurer que le port et l'hôte spécifiés dans le Le fichier de paramètres Django s'aligne sur la configuration réelle dans le fichier docker-compose.yml.

Étapes pour résoudre le problème :

  1. Définissez l'hôte sur 'db' et le port sur '3306' dans settings.py :

    • 'HOST' : 'db',
    • 'PORT' : '3306 ',
  2. Ajustez le fichier docker-compose.yml :

    • Assurez-vous que le port exposé pour le service de base de données est 3306.
    • Utilisez db comme hôte lors de la liaison des services Django et de base de données.
  3. Activez une vérification des ports ouverts :

    • Ajoutez une commande supplémentaire à docker-compose.yml pour vérifier si le port spécifié est accessible.

Exemple docker-compose Fichier .yml :

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

Conseils supplémentaires :

  • Utilisez db comme hôte lors de la connexion à MySQL depuis le conteneur Django (en utilisant la commande mysql -h db -p ...).
  • Vérifiez si 3306 est disponible en exécutant : nmap -p 3306 localhost.
  • Vérifiez que Django et les conteneurs de base de données fonctionnent correctement en utilisant : docker-compose ps.

En suivant ces étapes, vous pouvez établir une connexion stable entre Django et MySQL dans un environnement Docker à l'aide de docker-compose.

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