错误:连接 ECONNREFUSED 127.0.0.1:5432 docker migrate

Jay*_*ayR 3 postgresql node.js docker docker-compose

我正在尝试迁移数据,但始终找不到我的 postgreSQL。

version: '3'
services:
  server:
    build: ./server
    ports:
      - 3002:3002
    depends_on:
      - db
    environment:
      CORS_ALLOW_ORIGINS: http://localhost:8080,http://localhost:80
      PORT: 3002
      DEBUG: vuichoi*
      DEBUG_HIDE_DATE: 1
      SECRET_OR_PRIVATE_KEY: secret
      SECRET_OR_PUBLIC_KEY: secret
      DATABASE_URL: postgres://vuichoi:@db:5432/vuichoi #point the server container to the db container's IP address
      command: bash -c "sequelize db:migrate && sequelize db:seed:all"
  db:
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: vuichoi
      POSTGRES_DB: vuichoi
    image: postgres:10
Run Code Online (Sandbox Code Playgroud)

配置文件

{
"development": {
    "username": "vuichoi",
    "database": "vuichoi",
    "host": "localhost",
    "dialect": "postgres"
},
"test": {
    "username": "vuichoi",
    "password": "vuichoi",
    "database": "database_test",
    "host": "localhost",
    "dialect": "postgres"
},
"production": {
    "use_env_variable": "DATABASE_URL"
}
Run Code Online (Sandbox Code Playgroud)

}

在 docker-compose up --build 后 在此处输入图像描述

当我尝试迁移时:

在此处输入图片说明

Jay*_*ayR 6

我通过将 config.json 中的“localhost”替换为“host.docker.internal”来修复,然后它运行顺利。问题可能是找不到我的 Db 容器


Ped*_*lva 0

问题是您同时运行服务器和数据库,当服务器启动时,它会尝试连接到仍在启动/创建的数据库。

此问题的解决方案是使用仅在数据库启动后几秒钟启动服务器的脚本。在 https://github.com/PedroS11/node-postgres-redis-docker中,您有一个示例,entry-point.sh。或者,如果您愿意,可以搜索“wait for it docker”,您将找到一个用于此目的的脚本以及更多示例。