Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 运行sequelize迁移时getaddrinfo ENOTFOUND db出错_Javascript_Node.js_Docker_Docker Compose - Fatal编程技术网

Javascript 运行sequelize迁移时getaddrinfo ENOTFOUND db出错

Javascript 运行sequelize迁移时getaddrinfo ENOTFOUND db出错,javascript,node.js,docker,docker-compose,Javascript,Node.js,Docker,Docker Compose,我使用的是docker compose,当我尝试在控制台中运行warn sequelize db:migrate时,出现以下错误: 加载的配置文件“src/config/database.js”。 错误:getaddrinfo ENOTFOUND db“ 一切正常,但我无法运行迁移 Dockerfile FROM node:alpine WORKDIR /usr/app COPY package.json yarn.lock ./ RUN yarn COPY . . EXPOSE 300

我使用的是docker compose,当我尝试在控制台中运行
warn sequelize db:migrate
时,出现以下错误:

加载的配置文件“src/config/database.js”。 错误:getaddrinfo ENOTFOUND db“

一切正常,但我无法运行迁移

Dockerfile

FROM node:alpine

WORKDIR /usr/app
COPY package.json yarn.lock ./

RUN yarn

COPY . .

EXPOSE 3000
CMD ["yarn", "dev"]

Docker compose.yml

version: '3'

services:
  api:
    container_name: api
    build: .
    ports:
      - '3000:3000'
    command: yarn dev
    volumes:
      - .:/usr/app
    links:
      - db

  db:
    container_name: db
    image: mysql:5.7
    volumes:
      - ./data:/mysql/db
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: be_db
      MYSQL_USER: root
      MYSQL_PASSWORD: password
.env

# Database Variables
DB_HOST=db
DB_USER=root
DB_PASS=password
DB_NAME=be_db
DB_PORT:3306
/src/config/database.js

require('dotenv').config();

module.exports = {
  dialect: 'mysql',
  host: process.env.DB_HOST,
  username: process.env.DB_USER,
  password: process.env.DB_PASS,
  database: process.env.DB_NAME,
  define: {
    timestamps: false,
    underscored: true,
    underscoredAll: true,
  },
};
OBS:如果我将
DB\u HOST=DB
切换到
DB\u HOST=localhost
我可以运行迁移,但是它们会弹出以下错误:

code: 'ECONNREFUSED',
api    |     syscall: 'connect',
api    |     address: '127.0.0.1',
api    |     port: 3306,
api    |     fatal: true
编辑 好的,我只需将端口和主机分隔为各个字段:

“开发”:{
“用户名”:“postgres”,
“密码”:“postgres”,
“数据库”:“postgres”,
“主机”:“本地主机”,
“端口”:“5434”,
“方言”:“博士后”
},

我对docker compose和sequelize cli也有同样的问题

节点:
建造:
上下文:./节点
目标:开发
卷数:
-./node/src:/app/src
-./node/private:/app/private
端口:
- 3111:3000
命令:npm run dev
环境:
-节点_ENV=开发
环境文件:
-./node/.env
取决于:
-分贝
db:
图片:postgres:12
端口:
- 5434:5432
环境:
-POSTGRES\u HOST\u AUTH\u METHOD=信任
-POSTGRES\u USER=POSTGRES
-POSTGRES\u密码=POSTGRES
-POSTGRES_DB=POSTGRES
“开发”:{
“用户名”:“postgres”,
“密码”:“postgres”,
“数据库”:“postgres”,
“主机”:“本地主机:5434”,
“方言”:“博士后”
}
当我运行
❯ npx sequelize cli数据库:迁移

我得到以下错误 :

Sequelize CLI[节点:15.2.1,CLI:6.2.0,ORM:6.3.5]
已加载配置文件“config/config.json”。
利用环境“发展”。
错误:getaddrinfo ENOTFOUND本地主机:5434
它与下面的命令一起工作,这更像是一种解决方法

❯ npx sequelize cli数据库:迁移--url'postgres://postgres:postgres@本地主机:5434/postgres'
续集CLI[节点:15.2.1,CLI:6.2.0,ORM:6.3.5]
解析urlpostgres://postgres:*****@本地主机:5434/postgres
未执行任何迁移,数据库架构已是最新的。

您曾经解决过这个问题吗?我一直收到相同的错误消息。