如何找到 CI/CD 的数据库主机地址?

How to find my database host address for CI / CD?

提问人:ronzenith 提问时间:12/22/2019 更新时间:12/22/2019 访问量:432

问:

我将在AWS的gitlab中进行CI / CD。我的网站包含一个 Postgresql 数据库。

问题 1:但是我不知道如何找到数据库主机。有人说主机名是 localhost,但我对此表示怀疑,因为我已将我的网站部署到 AWS。应该是弹性IP?

我的 .gitlab-ci.yml 文件如下:

image: node:latest

stages:
  - testing

variables:
  POSTGRES_DB: firstdb
  POSTGRES_USER: johndoe
  POSTGRES_PASSWORD: 1234
  POSTGRES_HOST: //I don't know

testing:
  services:
    - postgres:latest

  before_script:
    - npm install -g yarn 
    - yarn install
    - yarn knex migrate:latest --env testing
  stage: testing
  script:
    - yarn jest

问题 2:另外,我是否应该相应地更改 knex.ts 开发、测试和生产的数据库配置,使其与 .gitlab-ci.yml 保持一致?

我的 knex 文件如下:

import * as dotenv from 'dotenv';
dotenv.config();

module.exports = {

  development: {
    client: 'postgresql',
    connection: {
      database: process.env.DB_NAME , //should I type actual data?
      user:     process.env.DB_USERNAME ,
      password: process.env.DB_PASSWORD
    },
    pool: {
      min: 2,
      max: 10
    },
    migrations: {
      tableName: 'knex_migrations'
    } 
  },
  testing:{
    client: 'postgresql',
    connection: {
      host: process.env.POSTGRES_HOST ,//should I type actual data?
      database: process.env.POSTGRES_DB ,
      user:     process.env.POSTGRES_USER ,
      password: process.env.POSTGRES_PASSWORD 
    },
    pool: {
      min: 2,
      max: 10
    },
    migrations: {
      tableName: 'knex_migrations'
    } 
  },
  production: {
    client: "postgresql",
    connection: {
      database: process.env.DB_NAME ,//should I type actual data?
      user:     process.env.DB_USERNAME ,
      password: process.env.DB_PASSWORD 
    },
    pool: {
      min: 2,
      max: 10
    },
    migrations: {
      tableName: "knex_migrations"
    }
  }
};

提前非常感谢。:)

PostgreSQL 集成 YAML 持续部署 knex.js

评论

0赞 DevKyle 12/22/2019
你有 postgres 连接字符串吗?主机包含在连接字符串中
0赞 ronzenith 12/22/2019
@DevKyle 如何在终端中调用连接字符串?
0赞 DevKyle 12/22/2019
不会在终端中使用连接字符串。我之所以问,是因为您的 postgres 帐户应该向您显示连接字符串是什么,然后您将能够填写 yml 和 knex 文件。
0赞 ronzenith 12/22/2019
@DevKyle 我是 Web 部署的新手。我想知道在哪里可以找到主机名。我应该输入来自 AWS 的弹性 IP 地址吗?还是输入“postgres”?

答:

1赞 Arun Kamalanathan 12/22/2019 #1

主机名为 。主机名派生自映像名称。postgres

解释如下: https://docs.gitlab.com/ee/ci/docker/using_docker_images.html#how-services-are-linked-to-the-job

评论

0赞 ronzenith 12/22/2019
当我使用 \conninfo 从终端调用主机时,它返回套接字而不是主机。我可以知道为什么吗?您以用户“johndoe”的身份连接到数据库“firstdb”,通过端口“5432”的“/var/run/postgresql”中的套接字//
0赞 Arun Kamalanathan 12/22/2019
所以你可以通过 postures hostname 访问数据库吗?
0赞 Arun Kamalanathan 12/22/2019
我不明白你说的套接字而不是主机是什么意思
0赞 ronzenith 12/22/2019
我可以从远程服务器访问数据库,但我需要部署并执行 CI/CD 过程。这就是为什么我需要POSTGRES_HOST。而且,我从其他帖子中看到 \conninfo 命令可以返回主机名、数据库名称、用户和端口号。我的返回一个套接字.....
0赞 Arun Kamalanathan 12/22/2019
您从哪里运行命令。您可能已连接到本地 postgres?