kubernetes 如何在gitlab ci作业中使用postgresql服务

nqwrtyyt  于 2023-03-12  发布在  Kubernetes
关注(0)|答案(1)|浏览(113)

我正在Kubernetes中尝试使用gitlab runner运行一个rspec单元测试,下面是我编写的示例测试作业。

test:
  stage : tests
  tags  :
        - k8s
  image : $CI_REGISTRY/devs/$CI_PIPELINE_BASE_IMAGE
  variables:
    DATABASE_HOST: "127.0.0.1"
    HOST_POSTGRES: "127.0.0.1"
    POSTGRES_DB: "postgres"
  services:
    - name : $CI_REGISTRY/devs/custom-postgres:v1.0.0
      alias: postgresql
  script:
        - echo "Testing pipeline"
        - apt-get update && apt-get install -y postgresql-client
        - pg_isready --dbname="${POSTGRES_DB}" --username="${POSTGRES_USER}" --host="${HOST_POSTGRES}"
        - echo $?
        - PGPASSWORD=${POSTGRES_PASSWORD} psql ${POSTGRES_DB} -U ${POSTGRES_USER} -h ${HOST_POSTGRES}-c "\dt"
        - gem intall bundler

答复如下。

$ pg_isready --dbname="${POSTGRES_DB}" --username="${POSTGRES_USER}" --host="${HOST_POSTGRES}"
127.0.0.1:5432 - no response

我试着找到相关的文档,但是并不多,我怎样才能正确地连接到作为服务运行的postgres示例呢?

3qpi33ja

3qpi33ja1#

PostgreSQL与脚本不在同一个容器中运行,因此无法通过回送地址127.0.0.1访问。https://docs.gitlab.com/ee/ci/yaml/#services
Ruby容器中的脚本命令可以连接到主机名为db-postgrest的PostgreSQL数据库。
在您的情况下,别名是postgresql,因此变量HOST_POSTGRES的值应该是postgresql。

相关问题