首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法用Django应用程序从容器连接到MySQL码头容器

无法用Django应用程序从容器连接到MySQL码头容器
EN

Stack Overflow用户
提问于 2016-11-27 03:57:38
回答 5查看 11.8K关注 0票数 10

当我试图从运行我的Django应用程序的docker容器连接到运行MySQL的容器时,我会得到以下错误:

代码语言:javascript
运行
复制
django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '172.17.0.2' (111)")

下面是我如何运行MySQL容器:

代码语言:javascript
运行
复制
$ docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=testdb -e MYSQL_ROOT_HOST=172.17.0.2 -d mysql/mysql-server:5.7

如果我没有指定MYSQL_ROOT_HOST,那么当我尝试使用Django应用程序从容器连接时,就会得到这个错误:

代码语言:javascript
运行
复制
django.db.utils.OperationalError: (1130, "Host '172.17.0.3' is not allowed to connect to this MySQL server")

以下是我的Django设置:

代码语言:javascript
运行
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'testdb',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '172.17.0.2',
        'PORT': '',
    }
}

我已经验证了MySQL容器使用IP 172.17.0.2:

代码语言:javascript
运行
复制
$ docker inspect mysql |grep -i ipaddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
EN

Stack Overflow用户

发布于 2020-08-26 20:21:59

正如@valignatev所建议的那样,使用env变量解决了一个问题。

我确实是这样创建容器的:

代码语言:javascript
运行
复制
 docker run --rm -dit -e MYSQL_ROOT_PASSWORD=pass -e MYSQL_ROOT_HOST=172.17.0.1 --name mysql_container -p 3306:3306 mysql-mysql-server

172.17.0.1是我默认的对接网关

一旦容器启动,我就可以像这样从我的主机连接:

代码语言:javascript
运行
复制
 mysql -h localhost -P 3306 --protocol=tcp -u root -p
票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40825617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档