【问题标题】:ERROR: connect ECONNREFUSED 127.0.0.1:5432 on Gitlab CI错误:在 Gitlab CI 上连接 ECONNREFUSED 127.0.0.1:5432
【发布时间】:2021-02-17 09:23:17
【问题描述】:

我目前正在做一个项目,我对 Gitlab 的 CI 有一个大问题。使用docker-compose构建的容器有两种,一种是API,另一种是PostgreSQL数据库。

这是我的 gitlab-ci.yml :

image: node:lastest

variables:
  POSTGRES_DB: test
  POSTGRES_USER: user
  POSTGRES_PASSWORD: pass
  POSTGRES_HOST: postgres
  POSTGRES_PORT: 5432
  POSTGRES_HOST_AUTH_METHOD: trust
  NODE_ENV: test

services:
  - postgres:12.2-alpine


stages:
   - test

eslint:
  stage: test
  image: node:12.18.2-alpine3.9
  before_script:
    - npm install
  script:
    - npm run linter
  except:
    - develop

audit:
  stage: test
  image: node:12.18.2-alpine3.9
  before_script:
    - npm install
    - npm install -g sequelize-cli
    - npx sequelize-cli db:create
  script:
    - npm test
  allow_failure: false
  except:
    - develop

所以,我收到了这个错误:

$ npx sequelize-cli db:create
Sequelize CLI [Node: 12.18.2, CLI: 6.2.0, ORM: 6.3.5]
Loaded configuration file "config/database.js".
Using environment "development".
ERROR: connect ECONNREFUSED 127.0.0.1:5432
Cleaning up file based variables
00:01
ERROR: Job failed: exit code 1

我错过了什么?

谢谢!

【问题讨论】:

  • 我不知道 gitlab CI,但我想你必须正确设置包含 PostgreSQL 服务器实例的容器的 IP 或名称。

标签: node.js postgresql docker sequelize.js gitlab-ci


【解决方案1】:

您的 npm 命令似乎没有在变量部分使用 POSTGRES_HOST。相反,它在连接到 postgres 时使用 127.0.0.1 并且由于您的服务未在本地运行而失败。解决这个问题,它应该可以在postgres 获得。

【讨论】:

    【解决方案2】:

    主要问题应该在您的config/database.js 文件中。

    检查这个文件中的主机是postgres而不是127.0.0.1

    【讨论】:

    • 谢谢!我刚刚将 gitlab-ci 文件中的 DATABASE_IP 环境变量替换为值 postgres
    猜你喜欢
    • 2019-05-03
    • 1970-01-01
    • 2021-07-19
    • 2022-07-22
    • 2022-06-28
    • 2021-12-22
    • 2022-01-15
    • 2022-08-18
    • 2020-09-19
    相关资源
    最近更新 更多