Mysql 使用docker compose进行sequelize迁移时出现错误

Mysql 使用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 .

我正在尝试创建一个使用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 . ./

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代码吗?