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

Docker Compose中Postgres容器始终显示不健康的问题排查

问题描述

我尝试为Docker添加健康检查,参考相关建议后,我的docker-compose配置如下:

version: '3'
services:
  # IMPORTANT NOTE: All other services will share the network on pgadmin service (network_mode: "service:pgadmin"), so ports need to be opened here instead of other the services.
  pgadmin:
    container_name: pgadmin
    image: dpage/pgadmin4
    ports:
      - "6555:80"       # pg admin
      - "6432:6432"     # postgres-db
    environment:
      PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
      PGADMIN_DEFAULT_PASSWORD: admin

  postgres-db:
    container_name: test-db
    image: postgres:14.4
    network_mode: "service:pgadmin"
    command: -p 6432
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: postgres
    healthcheck:
      test: ["CMD-SHELL", "pg_isready"]
      interval: 5s
      timeout: 5s
      retries: 3

但Postgres容器被标记为不健康状态:

debrajmanna@debrajmanna-DX6QR261G3 java % docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS                      PORTS                                                   NAMES
fec13f7d67e3   postgres:14.4    "docker-entrypoint.s…"   17 seconds ago   Up 16 seconds (unhealthy)                                                           test-db
b4042b8e906b   dpage/pgadmin4   "/entrypoint.sh"         17 seconds ago   Up 16 seconds               443/tcp, 0.0.0.0:6432->6432/tcp, 0.0.0.0:6555->80/tcp   pgadmin

请问哪里配置出错了?

问题原因及解决办法

问题出在你指定了Postgres使用自定义端口6432,但pg_isready默认会尝试连接5432端口,导致健康检查无法正常连通数据库,所以容器被标记为不健康。

修改postgres-db服务的健康检查配置,在pg_isready命令里明确指定端口即可:

healthcheck:
  test: ["CMD-SHELL", "pg_isready -p 6432"]
  interval: 5s
  timeout: 5s
  retries: 3

如果需要更严谨的检查,还可以加上用户名、数据库名参数,确保能正常登录数据库:

healthcheck:
  test: ["CMD-SHELL", "pg_isready -U postgres -d postgres -p 6432"]
  interval: 5s
  timeout: 5s
  retries: 3

修改完成后重启容器,健康检查就能正常识别Postgres的运行状态了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:32