首頁 >資料庫 >mysql教程 >為什麼即使我有正確的連接埠和容器名稱,Docker Compose 中的 Django 應用程式也無法連接到 MySQL?

為什麼即使我有正確的連接埠和容器名稱,Docker Compose 中的 Django 應用程式也無法連接到 MySQL?

Patricia Arquette
Patricia Arquette原創
2024-10-31 02:10:29988瀏覽

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

在Docker Compose 中排查Django-MySQL 連線失敗

在本文中,我們將解決在Django 和MySQL 之間建立連線的問題在Docker 容器中使用Docker Compose。儘管按照問題中所述配置了容器,用戶還是遇到了以下錯誤:

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

經過詳盡的故障排除後,用戶發現了根本原因和解決方案。以下是關鍵見解:

重點:

  • 驗證連接埠一致性:確保Django 設定中指定的連接埠號碼與MySQL容器公開的連接埠號匹配。在這種情況下,連接埠應該是 3306,而不是 3302。
  • Use Container Name for HOST: 不要使用容器的 IP 位址,而是將容器名稱指定為 Django 資料庫中的 HOST 值配置。

更新了Docker Compose 配置:

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

更新了Django 設置文件:

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

其他提示:

  • 在執行Django 之前利用check_db.py 腳本驗證MySQL 連接埠是否開啟。
  • 參考提供的 Dockerfile 進行建置Django-Py35 映像。
  • 在使用者的 GitHub 儲存庫上探索更多詳細資訊以獲得更多見解。

透過實作這些更改,使用者在 Docker 中成功建立了 Django 和 MySQL 之間的連接容器,解決「無法連接到 MySQL 伺服器」錯誤。

以上是為什麼即使我有正確的連接埠和容器名稱,Docker Compose 中的 Django 應用程式也無法連接到 MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn