提供的用户名 (docker) 和经过身份验证的用户名 (root) 在 docker compose 上不匹配

问题描述 投票:0回答:1

我正在使用项目 docker-osm 项目中的 docker-compose 文件。

文件是:


  version: '3.4'

  volumes:
    osm-postgis-data:
    settings-data:
    import_done:
    import_queue:
    cache:

  services:
    db:
      image: kartoza/postgis:${POSTGRES_VERSION}
      environment:
        - POSTGRES_USER=${POSTGRES_USER}
        - POSTGRES_PASS=${POSTGRES_PASS}
        - POSTGRES_DBNAME=${POSTGRES_DBNAME}
        - ALLOW_IP_RANGE=${ALLOW_IP_RANGE}
        - FORCE_SSL=${FORCE_SSL}
      volumes:
        - osm-postgis-data:/var/lib/postgresql
        - settings-data:/home/settings
      healthcheck:
        test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DBNAME} -U ${POSTGRES_USER}"]

    imposm:
      image: kartoza/docker-osm:imposm-latest
      volumes:
        - settings-data:/home/settings
        - import_done:/home/import_done
        - import_queue:/home/import_queue
        - cache:/home/cache
      depends_on:
        db:
          condition: service_healthy
      environment:
        - POSTGRES_USER=${POSTGRES_USER}
        - POSTGRES_PASS=${POSTGRES_PASS}
        - POSTGRES_DBNAME=${POSTGRES_DBNAME}
        - POSTGRES_PORT=${POSTGRES_PORT}
        - POSTGRES_HOST=${POSTGRES_HOST}
        - TIME=${TIME}
        - SETTINGS=${SETTINGS}
        - CACHE=${CACHE}
        - IMPORT_DONE=${IMPORT_DONE}
        - IMPORT_QUEUE=${IMPORT_QUEUE}
        - SRID=${SRID}
        - OPTIMIZE=${OPTIMIZE}
        - DBSCHEMA_PRODUCTION=${DBSCHEMA_PRODUCTION}
        - DBSCHEMA_IMPORT=${DBSCHEMA_IMPORT}
        - DBSCHEMA_BACKUP=${DBSCHEMA_BACKUP}
        - QGIS_STYLE=${QGIS_STYLE}
        - CLIP=${CLIP}
        - SSL_MODE=${SSL_MODE}

    osmupdate:
      image: kartoza/docker-osm:osmupdate-latest
      volumes:
        - settings-data:/home/settings
        - import_done:/home/import_done
        - import_queue:/home/import_queue
        - cache:/home/cache
      depends_on:
        db:
          condition: service_healthy
      environment:
        - MAX_DAYS=${MAX_DAYS}
        - DIFF=${DIFF}
        - MAX_MERGE=${MAX_MERGE}
        - COMPRESSION_LEVEL=${COMPRESSION_LEVEL}
        - BASE_URL=${BASE_URL}
        - IMPORT_QUEUE=${IMPORT_QUEUE}
        - IMPORT_DONE=${IMPORT_DONE}
        - TIME=${TIME}

    osmenrich:
      image: kartoza/docker-osm:osmenrich-latest
      volumes:
        - settings-data:/home/settings
        - import_done:/home/import_done
        - import_queue:/home/import_queue
        - cache:/home/cache
      depends_on:
        db:
          condition: service_healthy
      environment:
        - IMPORT_QUEUE=${IMPORT_QUEUE}
        - IMPORT_DONE=${IMPORT_DONE}
        - TIME=${TIME}
        - DBSCHEMA_PRODUCTION=${DBSCHEMA_PRODUCTION}
        - SSL_MODE=${SSL_MODE}

运行

docker-compose up
结果:


root@gis FATAL:  role "root" does not exist

将数据库服务中的

healthcheck
更改为:


    healthcheck:
      test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DBNAME} -U ${POSTGRES_USER}"]

结果:


dockerosm-db-1         | 2023-09-26 08:46:34.632 UTC \[236\] docker@gis LOG:  provided user name (docker) and authenticated user name (root) do not match
dockerosm-db-1         | 2023-09-26 08:46:34.632 UTC \[236\] docker@gis FATAL:  Peer authentication failed for user "docker"
dockerosm-db-1         | 2023-09-26 08:46:34.632 UTC \[236\] docker@gis DETAIL:  Connection matched pg_hba.conf line 94: "local   all             all                                     peer"

为什么它在 root 上进行身份验证,而不是在提供的用户上进行身份验证?

这篇文章postgres with docker compose给出了致命:角色“root”不存在错误似乎相关,但我无法理解如何在当前情况下应用它。

有什么想法可以从哪里开始吗?

postgresql docker-compose postgis
1个回答
0
投票

我在尝试对 kartoza/postgis 图像使用

pg_isready
健康检查时遇到了同样的问题。

"pg_isready -d ${POSTGRES_DBNAME} -U ${POSTGRES_USER}"
切换到
"pg_isready -h db"
,如此答案解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.