Postgresql 外部postgres db连接URL的KeyClope docker compose Yaml文件格式是什么

Postgresql 外部postgres db连接URL的KeyClope docker compose Yaml文件格式是什么,postgresql,docker-compose,yaml,dockerfile,keycloak,Postgresql,Docker Compose,Yaml,Dockerfile,Keycloak,我需要用外部postgres数据库连接URL设置KeyClope docker服务器。 下面是我当前的yaml文件内容,它正在处理POstgres docker容器图像,如前所述 version: '3' volumes: postgres_data: driver: local services: postgres: image: postgres:11 volumes: - postgres_data:/var/lib/postgresql/d

我需要用外部postgres数据库连接URL设置KeyClope docker服务器。 下面是我当前的yaml文件内容,它正在处理POstgres docker容器图像,如前所述

version: '3'

volumes:
  postgres_data:
    driver: local

services:
  postgres:
    image: postgres:11
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: password
    ports:
      - 5433:5432
  keycloak:
    image:jboss/keycloak:latest
    environment:
      DB_VENDOR: POSTGRES
      DB_ADDR: postgres
      DB_DATABASE: keycloak
      DB_USER: keycloak
      DB_SCHEMA: public
      DB_PASSWORD: password
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: password
      KEYCLOAK_LOGLEVEL: DEBUG
      ROOT_LOGLEVEL: DEBUG
    ports:
      - 8080:8080
      - 8443:8443
    depends_on:
      - postgres
我检查了传递外部数据库连接URL的官方文档。 但确实没有得到YAML文件中需要的更改 参考:

我尝试从服务中删除Postgres和Dependes_on部分,并在yaml的Kecyloak环境部分中传递了数据库连接详细信息,但这对我不起作用

有人能建议正确的YAML文件更改以使用PostgresDB连接URL吗


谢谢。

Docker容器可以通过它们的服务名称看到彼此,因此这里的服务名称
postgres
实际上是
keydape
容器的连接url

版本:“3”
卷数:
postgres_数据:
司机:本地
服务:
博士后:#服务名称
图片:博士后:11
卷数:
-postgres_数据:/var/lib/postgresql/data
环境:
博士后:钥匙斗篷
POSTGRES_用户:密钥斗篷
POSTGRES_密码:PASSWORD
端口:
- 5433:5432
钥匙斗篷:
图片:jboss/keybeave:latest
环境:
DB_供应商:POSTGRES

DB_ADDR:postgres#我按照您建议的yaml文件格式进行了尝试

version: '3'
volumes:
  postgres_data:
      driver: local
services:
  postgres:
      image: postgres
      volumes:
- postgres_data:/var/lib/postgresql/data
      environment:
        POSTGRES_DB: keycloakLocal
        POSTGRES_USER: postgres
        POSTGRES_PASSWORD: Adm!n@123
  keycloak:
      image: quay.io/keycloak/keycloak:latest
      environment:
        DB_VENDOR: POSTGRES
        DB_ADDR: localhost
        DB_PORT: 5432
        DB_DATABASE: keycloakLocal
        DB_USER: postgres
        DB_SCHEMA: public
        DB_PASSWORD: Adm!n@123
        KEYCLOAK_USER: localkeycloak
        KEYCLOAK_PASSWORD: local
      ports:
- 8080:8080
      depends_on:
- postgres
但在连接到数据库时仍然出现错误 postgres数据库托管在本地主机上

还在出错吗


拒绝连接数据库

当您编写localhost时,它是KeyClope容器的本地。容器对主机的看法不同。它可以是
host.docker.internal
或类似于
172.17.0.1
的ip。请仔细阅读我的评论,感谢您的回复,将DB_ADDR:host.docker.internal放在我的位置,但您能建议我们如何使用托管在Azure或其他存储库上的数据库吗,在这种情况下,我们将如何传递此DB_ADDR环境变量是否可以不使用postgres映像/容器,而只传递postgres ConnectionUrl当然可以,请确保存在keydove的数据库用户。您是否可以共享该数据库的yaml文件格式?我们只需要keydove容器和外部postgres数据库连接keydove,只需使用连接URL即可删除postgresTried下面版本中嵌套的所有内容:“3”服务:keydove:image:quay.io/keydove/keydove:latest环境:DB_供应商:POSTGRES DB_地址:localhost DB_端口:5432 DB_数据库:keydepose本地DB_用户:POSTGRES DB_架构:public DB_密码:Adm!n@123keydove_用户:localkeydove keydove_密码:本地端口:-8080:8080删除了所有与postgres相关的数据刚刚传递了环境变量也传递了IP地址,而不是localhost仍然没有连接