繁体   English   中英

带有mysql和django的Docker。 尽管有任何尝试,但仍拒绝连接到mysql

[英]Docker with mysql and django. Connection to mysql is refused despite any attempts

到目前为止,我已经尝试了在互联网上可以找到的所有内容-但似乎无济于事。

这是我的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“连接被拒绝”)')

我尝试了几种修改,但均未成功:

  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)

区别在这里很好地解释

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM