我正在使用node,docker,mysql和sequelize,并试图将sequelize连接到在docker上运行的mysql容器。它只能通过端口3306连接,尽管我已经将“端口”改为3308-3308。当我查找正在运行的容器时,我得到了mysql数据库的以下内容:
ticketgo_database_1 docker-entrypoint.sh mysqld Up 3306/tcp,
0.0.0.0:3308->3308/tcp
这就解释了为什么它只能连接到端口3306,但我需要将连接端口从3306改为3306,因为该端口在我的计算机上很忙。我该怎么做呢?
Mysql容器:
database:
image: mysql
environment:
MYSQL_DATABASE: "ticketgo"
MYSQL_ROOT_PASSWORD: "pass"
volumes:
- "./sql:/docker-entrypoint-initdb.d"
ports:
- "3308:3308"
发布于 2018-08-06 06:43:47
我猜你的应用也是由docker-compose管理的。不需要更改MySQL在其自己的容器中侦听哪个端口。保留squelize to databade:3306,或者不在MySQL docker compose配置中指定端口映射,或者指定:3308:3306
,这意味着主机上端口3308将映射到3306容器端口。这并不意味着MySQL会监听3308。它将继续在其容器3306中侦听,并且主机上的新端口3308将被映射到它。
如果您需要从外部docker-compose服务(例如,从主机上的另一个应用程序或MySQL图形用户界面)访问MySQL,则仅指定端口映射
发布于 2018-08-06 04:49:40
在端口部分,将第二个端口更改为您想要的任何端口"3308:3309";
或者您可以在she by -p 3309:3308中执行此操作
https://stackoverflow.com/questions/51698028
复制相似问题