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

GitLab Job中自定义Docker镜像无法连接localhost问题求助

问题原因与解决方案

核心原因

GitLab CI Runner启动容器后会立即执行script中的命令,但此时PostgreSQL服务尚未完成初始化并就绪;而你本地WSL环境是交互式进入容器,服务已经完成启动,因此不会出现连接拒绝的问题。

解决方案

修改GitLab Job的脚本,添加等待PostgreSQL服务就绪的逻辑,确保psql命令在服务可用后再执行:

test:
  image: $CI_REGISTRY_IMAGE/ci_test
  stage: test
  environment:
    name: Production
  script:
    # 每隔1秒检查一次PostgreSQL服务状态,直到就绪
    - until pg_isready -h localhost -U postgres; do sleep 1; done
    # 执行psql连接操作
    - psql -h localhost -U postgres

补充说明

  • pg_isready是PostgreSQL官方自带工具,你的PostGIS镜像中已预装,无需额外安装。
  • 若需要限制等待时长,可添加超时逻辑避免无限等待:
    - timeout 30s bash -c 'until pg_isready -h localhost -U postgres; do sleep 1; done'
    
    上述命令会在30秒内未检测到服务就绪时终止脚本。

内容的提问来源于stack exchange,提问作者user3353167

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:42:42