我遵循了docker-compose文件,遇到错误消息。
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 sequelize已弃用 现在不建议使用基于字符串的运算符。请使用基于符号 操作员以获得更好的安全性,更多信息请参见 http://docs.sequelizejs.com/manual/tutorial/querying.html#operators在 node_modules / sequelize / lib / sequelize.js:242:13
错误:连接ECONNREFUSED 172.21.0.2:3306
答案 0 :(得分:2)
您不应在0.0.0.0
上访问MySQL。
在同一网桥网络上,由Docker-compose定义的容器的主机名等于容器名,因此您的MySQL主机名是db
。
如果要自定义容器主机名,则可以使用网络上的别名来进行。请查看以下答案:https://stackoverflow.com/a/47264089/3429323