ホームページ  >  記事  >  データベース  >  ポートとコンテナー名が正しいにもかかわらず、Docker Compose の Django アプリが MySQL に接続できないのはなぜですか?

ポートとコンテナー名が正しいにもかかわらず、Docker Compose の Django アプリが MySQL に接続できないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 02:10:29906ブラウズ

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 Compose を使用して Docker コンテナ内で実行します。質問で説明されているようにコンテナを構成したにもかかわらず、ユーザーは次のエラーに遭遇しました:

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

徹底的なトラブルシューティングの後、ユーザーは根本原因と解決策を発見しました。重要な洞察は次のとおりです:

キー ポイント:

  • ポートの一貫性の確認: Django 設定で指定されたポート番号が正しいことを確認します。ファイルは、MySQL コンテナによって公開されるポート番号と一致します。この場合、ポートは 3302 ではなく 3306 である必要があります。
  • 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。