NodeJS无法连接到Docker容器内的MYSQL
我遵守了下面的docker编写文件,遇到错误消息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: - "
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只起作用。