获取SequelizeConnectionRefusedError:当运行docker与sequelize
我正在运行docker以下configuration
web: image: ca9a385372b0 volumes: - .:/src ports: - "8000:8000" container_name: web links: - mysql mysql: image: 7666f75adb6b environment: container_name: mysql ports: - "6603:3306" volumes: - ./data/mysql:/var/lib/mysql
启动容器后,我可以通过我的主terminal很好地连接到端口6603上的mysql。
mysql -uuser -p -h127.0.0.1 -P6603
但是当我通过我的nodejs应用程序容器时,我得到以下错误。 我已经链接了容器。 我可以看到它试图连接到使用内部IP和所有的MySQL容器。
未处理的拒绝SequelizeConnectionRefusedError:连接ECONNREFUSED 172.17.0.3:6603
我也检查了MySQL容器的权限,看到这个:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION
有什么我失踪?
mysql容器暴露了端口3306(如在你的端口映射中看到的那样,它将外部端口6603连接到暴露的容器端口3306)。
ports: - "6603:3306"
我们知道这是正确的,因为你可以从外部使用它并连接到mysql。
mysql -uuser -p -h127.0.0.1 -P6603
您的节点应用正试图连接到外部端口6603(正如我们可以从错误消息中看到的那样)。
未处理的拒绝SequelizeConnectionRefusedError:连接ECONNREFUSED 172.17.0.3:6603
但节点在dockernetworking内运行,而不是在外面。 它无法访问外部映射的端口。
解决scheme:告诉节点应用程序使用端口3306。