繁体   English   中英

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

[英]Docker MySQL connection refused on different port

所以我在一个已经运行 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 文件和“ 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。

这篇文章: https: //dev.to/pmutua/run-mysql-on-port-3307-using-docker-compose-gf8 在mysql配置文件上定义端口:

 mysqldb:
  image: mysql
  ports:
  - 3307:3307
  environment:
  - MYSQL_ROOT_PASSWORD=password
  - MYSQL_TCP_PORT=3307
  volumes:
  - mysql:/var/lib/mysql
  - mysql_config:/etc/mysql

暂无
暂无

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

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