mysql和django的docker尽管有任何尝试,mysql的连接还是被拒绝了

vsmadaxz  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(368)

到目前为止,我已经尝试了一切我能在互联网上找到-但似乎没有任何帮助。
这是我的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,'无法连接到'ivsdb'上的mysql服务器(111“连接被拒绝”)')
我尝试了几个修改,但都没有成功:
将所有内容移到一个docker compose文件中
彻底摆脱“网络”进入
将主机更改为 ivsdb / 127.0.0.1 / localhost / 0.0.0.0 有用的东西:
djago服务运行良好
mysql服务运行良好。
我可以使用命令行连接到它:

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

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

看起来django在连接mysql容器时遇到了一些困难。但从“拒绝连接”判断,django可以访问mysql容器。
我错过了什么?

lawou6xi

lawou6xi1#

DEFAULT_DB_PORT=10001 实际上应该是mysql的默认端口(3306),而不是主机Map端口(10001)
这里很好地解释了这种区别

相关问题