You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI中PostgreSQL服务无法访问的问题排查与解决求助

GitLab CI中PostgreSQL服务无法访问的问题排查与解决求助

我快被这个问题搞疯了!我想在GitLab CI的gitlab-ci.yml配置里启动一个PostgreSQL数据库,按照我的理解,Web应用应该能通过postgres:5432访问它,但实际完全不行——同样运行在Docker容器里的Web应用根本连不上这个数据库。

我的gitlab-ci.yml相关配置

deploy_test:
  image: docker
  stage: deploy_test
  services:
    - name: postgres
      alias: postgres
    - name: docker:23.0.6-dind
  variables:
    POSTGRES_DB: postgresdb
    POSTGRES_USER: postgres
    POSTGRES_PASSWORD: postgres
    POSTGRES_HOST_AUTH_METHOD: trust
  script:
    - apk --no-cache add curl
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker run -e DATABASE_URL="postgres://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres:5432/$POSTGRES_DB" -d -p 8080:80 --name $TEST_APP_CONTAINER_NAME $CI_REGISTRY/$APP_CONTAINER_URL:$VERSION

    # Wait for the web app to be ready
    - timeout 300s sh -c 'until status_code=$(curl -s -o /dev/null -w ''%{http_code}'' http://$TEST_APP_CONTAINER_NAME:8080); [ "$status_code" -eq 200 ]; do sleep 5; echo "HTTP Status Code= $status_code"; docker ps -a; docker logs $TEST_APP_CONTAINER_NAME; done'
    - echo "Test web app is ready!"

等待循环的输出日志

HTTP Status Code= 000
CONTAINER ID   IMAGE                                                            COMMAND                  CREATED         STATUS                     PORTS     NAMES
8bb3f101174e   registry.gitlab.com/X/testapp/testapp:v1   "docker-entrypoint.s…"   8 seconds ago   Exited (1) 4 seconds ago             e2e_container

> start:migrate:prod
> prisma migrate deploy && npm run start

Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database "postgresdb", schema "public" at "postgres:5432"

Error: P1001: Can't reach database server at `postgres`:`5432`

Please make sure your database server is running at `postgres`:`5432`.

npm notice
npm notice New minor version of npm available! 10.2.4 -> 10.5.0
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v10.5.0>
npm notice Run `npm install -g npm@10.5.0` to update!
npm notice

我的几个疑问

  • 为什么运行docker ps -a的时候看不到数据库容器?我本来以为GitLab CI的services会用独立的Docker容器启动的啊?
  • 我了解过Docker网络的概念,是不是我的Web应用和数据库不在同一个网络里才导致连不上?
  • 这种情况下,在启动Web应用之前,我该怎么检查数据库是不是真的在运行?
  • 最后求各位大佬给点能让这个流程跑通的建议,真的万分感谢!

备注:内容来源于stack exchange,提问作者zabzze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:49:51