首页  >  文章  >  数据库  >  为什么即使我有正确的端口和容器名称,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 容器中使用 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