【问题标题】:What is the keycloak docker compose Yaml file format for external postgres db connection URL外部postgres db连接URL的keycloak docker compose Yaml文件格式是什么
【发布时间】:2021-08-28 02:07:25
【问题描述】:

我需要使用外部 postgres 数据库连接 URL 设置 Keycloak 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 文件中需要哪些更改 参考:https://hub.docker.com/r/jboss/keycloak/

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

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

谢谢。

【问题讨论】:

    标签: postgresql docker-compose yaml dockerfile keycloak


    【解决方案1】:

    我按照您建议的 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 时,它是 keycloak 容器的本地。容器对主机的看法不同。它要么是host.docker.internal,要么是像172.17.0.1 这样的ip。
    • 感谢您的回复,将 DB_ADDR:host.docker.internal 为我工作,但您能否建议我们如何使用托管在 Azure 或其他存储库上的数据库,在这种情况下我们如何使用将传递此 DB_ADDR 环境变量
    【解决方案2】:

    Docker 容器可以通过服务名看到彼此,所以这里的服务名postgres实际上是keycloak容器的连接url。

    version: '3'
    
    volumes:
      postgres_data:
        driver: local
    
    services:
      postgres: # Service name 
        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 # <<< This is the address, change it to your external db ip/domain
          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
    
    

    【讨论】:

    • 是否可以不使用 postgres Image/container ,只通过 Postgres ConnectionURL
    • 当然可以,请确保keycloak的数据库用户存在。
    • 你能分享一下我们只需要 keycloak 容器和外部 postgres 数据库连接的 keycloak 只使用连接 URL 的 yaml 文件格式
    • 只需删除嵌套在 postgres 下的所有内容
    • 尝试以下版本:'3' 服务:keycloak:图像:quay.io/keycloak/keycloak:最新环境: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: 本地端口: - 8080:8080 删除了所有与postgres相关的数据 刚刚传递的环境变量也传递了IP地址而不是localhost 仍然没有连接
    猜你喜欢
    • 2021-08-15
    • 2023-01-31
    • 1970-01-01
    • 2020-04-27
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    相关资源
    最近更新 更多