Gitlab CI无法将Spring应用程序连接到Postgres

时间:2020-08-18 09:46:09

标签: spring postgresql docker gitlab-ci

我在gitlab yml文件中处于后续阶段。

    integration-tests:
      image: mydocker-hub-id/mvn-intergration-tests-image:latest
      stage: test
      services:
        - postgres
      script:
        - export PGPASSWORD=$POSTGRES_PASSWORD
        - psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "SELECT 'OK' AS status;"
        - cd source_code
        - pg_isready
        - mvn verify -P test-ci -DskipUTs=true

为命令pg_isready执行作业时,我的响应5432没有响应。 从每个集成测试执行测试时,我都会出错:

org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

此阶段使用的图像是基于postgres图像构建的,该图像还安装了maven和java 11。

spring应用程序无法与postgres服务器连接可能是什么问题。命令postgres --version显示正确的版本。也可以命令

"psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "SELECT 'OK' AS status;"

返回确定结果。

app.properties中的Spring db连接如下:

spring.datasource.url=jdbc:postgresql://localhost:5432/test

2 个答案:

答案 0 :(得分:0)

我在gitlab文档中找到有关postgres服务配置的详细信息

https://docs.gitlab.com/ee/ci/services/postgres.html?fbclid=IwAR1eDlOQ4ACn6zqw1auIetB07JRcCGi1Pjl-hpfGBM45ujvkImm6fHSSbgg

数据库url应该包含主机postgres的名称,而不是localhost。

答案 1 :(得分:0)

我发现gitlab-runner将postgresql docker映像作为postgres运行,并且正在将jdbc:postgresql:// localhost:5432 / dbname更改为jdbc:postgresql:// postgres:5432 / dbname。