mysql - Docker 与 mysql 和 django。尽管进行了任何尝试,与 mysql 的连接都被拒绝

标签 mysql django docker docker-compose connection-refused

到目前为止,我已经尝试了在互联网上可以找到的所有方法 - 但似乎没有任何帮助。

这是我的 docker-compose.yml 文件:

version: '3.3'

services:
  ivs_fraud:
    build:
      context: .
      args:
        GIT_SSH_KEY: ${GIT_SSH_KEY}
    image: ivs_fraud:latest
    container_name: fraud
    depends_on:
      - ivsdb
    links:
      - ivsdb
    networks:
      - database_network

networks:
  database_network:
    driver: bridge

我有一个到 ivsdb 服务的链接/依赖项,该服务在另一个 docker-compose-dev.yml 文件中定义:

version: '3.3'

services:
  ivsdb:
    image: mysql
    container_name: ivsdb
    networks:
      - database_network
    ports:
      - ${DEFAULT_DB_PORT}:3306
    restart: always
    environment:
      MYSQL_DATABASE: ${DEFAULT_DB_NAME}
      MYSQL_USER: ${DEFAULT_DB_USER}
      MYSQL_PASSWORD: ${DEFAULT_DB_PASS}
      MYSQL_ROOT_PASSWORD: ${DEFAULT_DB_ROOT_PASS}

这是我的 .env 文件(Django 读取此 .env 文件并根据它创建连接):

DEFAULT_DB_NAME=ivsdb
DEFAULT_DB_HOST=ivsdb
DEFAULT_DB_PORT=10001
DEFAULT_DB_USER=root
DEFAULT_DB_PASS=root
DEFAULT_DB_ROOT_PASS=root

我不断得到:

(2003, 'Can\'t connect to MySQL server on \'ivsdb\' (111 "Connection refused")')

我尝试了一些修改但没有成功:

  1. 将所有内容移至一个 docker-compose 文件中
  2. 完全摆脱“网络”条目
  3. 将主机更改为 ivsdb/127.0.0.1/localhost/0.0.0.0

有效的事情:

  1. Djago 服务运行良好
  2. Mysql服务运行良好。

我可以使用命令行连接到它:

mysql -uroot -proot -P10001 --protocol=tcp 

mysql -uroot -proot -P10001 -h127.0.0.1 (IP adress enforces tcp protocol)

看起来 Django 连接到 mysql 容器时遇到了一些困难。但从“连接被拒绝”来看 - django 可以访问 mysql 容器。

我错过了什么?

最佳答案

DEFAULT_DB_PORT=10001 实际上应该是 MySQL 的默认端口 (3306),而不是主机映射端口 (10001)

很好地解释了差异 here

关于mysql - Docker 与 mysql 和 django。尽管进行了任何尝试,与 mysql 的连接都被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53222552/

相关文章:

ManyRelatedField 的 Django REST Framework 序列化

python - 如何使用 ForeignKey ('self' ) 获取字段而不可能链接到同一条目?

docker - 通过外壳功能复制具有位置的 Assets

php - 从 HTML 表获取值并使用它来编辑记录

mysql - 查询不工作。也许 'group by' 有问题。怎么了?

django - 直接从 postgres 过滤给定日期(时区感知日期时间)的数据

docker - Windows Docker中的网络存储(SMB/CIFS)

php - (MySQL) 按字段分组并选择 COUNT(字段) 和分组行数

mysql - 在 MySQL 中简明地查找不到 6 个月前的行

Docker容器不断重启