NodeJS无法连接到Docker容器内的MYSQL

NodeJS无法连接到Docker容器内的MYSQL,mysql,node.js,docker,sequelize.js,Mysql,Node.js,Docker,Sequelize.js,我遵守了下面的docker编写文件,遇到错误消息 version: '3' services: node: build: ./app environment: - NODE_ENV=production - PORT=3000 - MYSQL_HOST=ppshein-mysql - MYSQL_USER=root - MYSQL_PASSWORD=ppshein123456 ports: - "

我遵守了下面的docker编写文件,遇到错误消息

version: '3'
services:
  node:
    build: ./app
    environment:
      - NODE_ENV=production
      - PORT=3000
      - MYSQL_HOST=ppshein-mysql
      - MYSQL_USER=root
      - MYSQL_PASSWORD=ppshein123456
    ports:
      - "3000:3000"
    networks:
    - my-bridge-network
    depends_on:
      - "${MYSQL_HOST}"
    container_name: ppshein-api
  db:
    image: mysql:8.0.14
    environment:
      - MYSQL_ROOT_PASSWORD=ppshein123456
    networks:
    - my-bridge-network
    container_name: ppshein-mysql
networks:
  my-bridge-network:
    driver: bridge
这是mysql sequelize的配置文件

"production": {
    "username": "root",
    "password": "ppshein123456",
    "database": "database_production",
    "host": "ppshein-mysql",
    "dialect": "mysql",
    "logging": false
}
这是NodeJS应用程序的
Dockerfile

FROM node:9.10.1
ENV NODE_ENV=development
COPY ./ /var/www
WORKDIR /var/www/
RUN yarn install && yarn add sequelize-cli -g
EXPOSE 3000
CMD /bin/bash ./wait-for-it.sh ppshein-mysql:3306 -- npm run docker
最后,我遇到了以下错误消息:

已加载配置文件“config/config.json”。使用环境 “生产”。2019年1月26日星期六01:03:45 GMT续集不推荐 现在不推荐使用基于字符串的运算符。请使用基于符号的 操作员要获得更好的安全性,请访问 在 node_modules/sequelize/lib/sequelize.js:242:13

错误:connect ECONREFUSSED 172.21.0.2:3306


您不应该在
0.0.0.0
上访问MySQL

Docker compose为同一网桥网络上的容器定义主机名等于容器名,因此您的MySQL主机名为
db


若要自定义容器主机名,可以在网络上使用别名。请参阅此答案:

在配置文件中,它应该是
的“主机”:“db”
而不是“主机”:“0.0.0.0”,准确地说。或者如果您选择使用alias,您在alias上定义的主机名。即使我做了这样的更改,它也不起作用。我已更新了代码。请尝试删除docker-compose.yml上对网络的所有提及。默认网络应该可以正常工作。我发现,这是docker mysql版本的问题<代码>mysql:5只起作用。