Mysql 使用docker compose进行sequelize迁移时出现错误
我正在尝试创建一个使用sequelize管理MySQL数据库的nodejs应用程序。为此,我使用了sequelize cli 当我运行docker compose时,它正确地构建了图像,但在启动容器时,sequelize cli无法连接到MySQL数据库并进行迁移 DockerfileMysql 使用docker compose进行sequelize迁移时出现错误,mysql,node.js,docker,docker-compose,sequelize.js,Mysql,Node.js,Docker,Docker Compose,Sequelize.js,我正在尝试创建一个使用sequelize管理MySQL数据库的nodejs应用程序。为此,我使用了sequelize cli 当我运行docker compose时,它正确地构建了图像,但在启动容器时,sequelize cli无法连接到MySQL数据库并进行迁移 Dockerfile FROM node:10-alpine RUN mkdir /usr/app WORKDIR /usr/app COPY package.json yarn.lock ./ RUN yarn COPY .
FROM node:10-alpine
RUN mkdir /usr/app
WORKDIR /usr/app
COPY package.json yarn.lock ./
RUN yarn
COPY . ./
EXPOSE 3333
CMD yarn start
docker-compose.yml
version: '3'
services:
database:
image: mysql:5.7
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
- MYSQL_ROOT_PASSWORD=123123
- MYSQL_DATABASE=test
app:
build: .
ports:
- '3333:3333'
command: yarn start
environment:
- DB_HOST=database
- DB_USER=root
depends_on:
- database
database.js
module.exports = {
username: process.env.DB_USER || 'test',
password: process.env.DB_PASSWORD || '123123',
database: process.env.DB_NAME || 'test',
host: process.env.DB_HOST || '127.0.0.1',
}
package.json脚本
"scripts": {
"start": "npx sequelize db:migrate && npx sequelize db:seed:all && node src/app/index.js"
},
当我运行docker compose up-d--build
时,我希望看到容器运行没有问题。docker compose创建的数据库容器运行正常,但应用程序容器运行不正常
运行docker日志
,我有以下输出:
yarn run v1.17.3
$ npx sequelize db:migrate && npx sequelize db:seed:all && node src/app/index.js
Sequelize CLI [Node: 10.16.3, CLI: 5.4.0, ORM: 5.8.5]
Loaded configuration file "src/config/database.js".
ERROR: connect ECONNREFUSED 172.27.0.2:3306
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
Docker compose将数据库容器IP注入到我的应用程序容器环境变量中,那么为什么我仍然被拒绝连接?您正在链接Docker容器吗?或者他们是同一网络的一部分?您需要验证数据库和应用程序容器之间的链接。运行迁移之前,请确保连接了2个容器。我知道有点晚了,但您所要做的就是将主机从“172.27.0.2”更改为您的db容器名称“数据库”您能发布您的Sequalize代码吗?