错误:在 Gitlab CI 上连接 ECONNREFUSED 127.0.0.1:5432

Posted

技术标签:

【中文标题】错误:在 Gitlab CI 上连接 ECONNREFUSED 127.0.0.1:5432【英文标题】:ERROR: connect ECONNREFUSED 127.0.0.1:5432 on Gitlab CI 【发布时间】: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 或名称。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

谢谢!我刚刚将 gitlab-ci 文件中的 DATABASE_IP 环境变量替换为值 postgres

以上是关于错误:在 Gitlab CI 上连接 ECONNREFUSED 127.0.0.1:5432的主要内容,如果未能解决你的问题,请参考以下文章

Gitlab CI 设置错误 - 找不到 JavaScript 运行时

GitLab Runner CI 管道内的 SSH 连接无法验证主机密钥

从 GitLab CI 运行 sonarqube 时出错

Gitlab CI/CD 运行器:找不到 mvn 命令

gitlab-ci.yml 仅在 master 分支上

为啥我在 Gitlab CI/CD 管道上的 Docker 中收到“不允许跨设备链接”错误?