Docker MySQL连接在其他端口上被拒绝

时间:2019-03-05 00:36:34

标签: mysql docker docker-compose

因此,我在已经运行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 -

我尝试了各种不同的网络配置,但是每一个都会产生一个新问题。这是我的撰写文件 docker-compose.yml file使用和输出“ 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运行的端口。任何输入表示赞赏。

1 个答案:

答案 0 :(得分:1)

似乎您正在从另一个Docker容器连接到数据库。这样做时,不会使用裸露/转发的端口,因此您仍然应该从那里使用3306。从Docker外部连接时仅使用3307。