Maison > base de données > tutoriel 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

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
Libérer: 2024-10-29 05:34:31
original
1115 Les gens l'ont consulté

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")')
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal