Docker MySQL连接在不同的端口上被拒绝

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (578)

所以我在已运行MySQL的主机上运行一些Docker容器。我想在同一台机器上的Docker容器中运行MySQL。我将Docker compose文件设置为使用3307,但当我的应用程序尝试获取数据库连接时,我看到:

web_1     | Could not connect ... 2003: Can't connect to MySQL server on 'db:3307' (111 Connection refused)
web_1     | 10.0.2.2 - - [04/Mar/2019 21:06:31] "GET / HTTP/1.1" 500 -

我尝试了各种不同的网络配置,但每个配置都会产生一个新问题。这是compie文件我是 docker-compose.yml文件使用和' docker container ps'的输出

[jim@localhost ~]$ docker container ps
CONTAINER ID        IMAGE               COMMAND                  CREATED            STATUS              PORTS                               NAMES
a0f12368ee8d        jimpython_web       "python ./app.py"        4 minutes ago       Up 4 minutes        0.0.0.0:5000->5000/tcp              jimpython_web_1
9b0efbf08069        jimpython_celery    "celery worker -A ..."   4 minutes ago       Up 4 minutes                                            jimpython_celery_1
fcc72e5a9fdd        mysql:5.7           "docker-entrypoint..."   15 minutes ago      Up 4 minutes        33060/tcp, 0.0.0.0:3307->3306/tcp   jimpython_db_1
0b65a78a56f2        redis:alpine        "docker-entrypoint..."   15 minutes ago      Up 4 minutes        0.0.0.0:6379->6379/tcp              jimpython_redis_1
3c2d1551c165        mongo               "docker-entrypoint..."   15 minutes ago      Up 4 minutes        0.0.0.0:27017->27017/tcp            jimpython_mongo_1

我希望尽可能不改变Docker中运行MySQL的端口。任何输入都表示赞赏。

提问于
用户回答回答于

看起来您正在从另一个Docker容器连接到数据库。执行此操作时,不使用公开/转发端口,因此您仍应使用3306。从Docker外部连接时,您只能使用3307。

扫码关注云+社区

领取腾讯云代金券