【问题标题】:Keycloak 18.0 with Postgres 10.21带有 Postgres 10.21 的 Keycloak 18.0
【发布时间】:2022-10-24 19:27:59
【问题描述】:

我正在尝试使用 postgres 10.21 运行 Keycloak 18

这是我的码头工人撰写

version: "3.5"

services:

  keycloaksvc:
    image: quay.io/keycloak/keycloak:18.0
    user: '1000:1000'
    container_name: "testkc"
    environment:
      - DB_VENDOR=postgres
      - DB_ADDR=postgressvc
      - DB_DATABASE=keycloak
      - DB_PORT=5432
      - DB_SCHEMA=public
      - DB_USER=KcUser
      - DB_PASSWORD=KcPass
      - KC_HOSTNAME=localhost
      - ROOT_LOGLEVEL=DEBUG
      - PROXY_ADDRESS_FORWARDING=true
      - REDIRECT_SOCKET=proxy-https
      - KEYCLOAK_LOGLEVEL=DEBUG
      - KEYCLOAK_ADMIN=admin
      - KEYCLOAK_ADMIN_PASSWORD=testing

    volumes:
       - ./ssldir:/etc/x509/https
       - "/etc/timezone:/etc/timezone:ro"
       - "/etc/localtime:/etc/localtime:ro"
       - "/etc/passwd:/etc/passwd:ro"
       - ./kcthemes:/opt/keycloak/themes

    entrypoint: /opt/keycloak/bin/kc.sh start --auto-build  --hostname-strict-https=false  --http-relative-path=/auth --features=token-exchange  --https-certificate-file=/etc/x509/https/tls.crt --https-certificate-key-file=/etc/x509/https/tls.key
    network_mode: "host"
    depends_on:
      - postgressvc



  postgressvc:
    image: postgres:10.21-alpine
    user: '1000:1000'
    container_name: "kc_postgres"
    environment:
      - POSTGRES_DB=keycloak
      - POSTGRES_USER=KcUser
      - POSTGRES_PASSWORD=KcPass
    volumes:
      - ./pgdta:/var/lib/postgresql/data
      - "/etc/timezone:/etc/timezone:ro"
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/passwd:/etc/passwd:ro"
    network_mode: "host"

它运行良好,我可以进入管理控制台 https://localhost:8443/auth/admin

我还可以添加新领域和用户。但是我在 postgres 中看不到任何数据。如果我在 docker-compose 文件中进行更改并重新启动,所有领域和用户都将丢失

完全相同的 postgres 设置适用于图像:jboss/keycloak:16.1.1

keycloak 18 我缺少什么设置?

【问题讨论】:

    标签: keycloak keycloak-services


    【解决方案1】:

    version 17 的 Keycloak 有重大变化(它基于 Quarkus),并且配置也发生了变化。所以不要使用与 Keycoak 16 一起使用的配置,而是检查当前的 Keycloak 文档,例如https://www.keycloak.org/server/containers

    您会发现 DB env 变量现在是:

    KC_DB_URL,KC_DB_USERNAME,KC_DB_PASSWORD,...
    

    其他环境变量也已更改,因此它不仅与数据库环境变量有关。

    【讨论】:

    • 我们如何在 Keycloak 部分指定 postgressvc ? DB_ADDR 的等价物是什么?它是否已被 KC_DB_URL 取代?
    • KC_DB_URL 有效
    • 我真的很高兴知道在哪里可以找到所有这些新变量的详尽列表!
    • @tisc0 keycloak.org/server/all-config 只需将其转换为环境变量名称约定,例如db-url => KC_DB_URL
    • 是的,只要找到它!我没有点击小箭头来展开每个变量的解释!谢谢@JanGaraj
    【解决方案2】:

    我也面临与 keycloak v19.0.0 相同的问题。它正在将数据存储在内存中。 但是通过以下配置可以将数据存储在 postgres 中。

    keycloak:
        container_name: keycloak
        environment:
          KC_DB: postgres
          KC_DB_URL: jdbc:postgresql://localhost:5432/keycloak
          KC_DB_USERNAME: postgres
          KC_DB_PASSWORD: user
          KEYCLOAK_ADMIN: admin
          KEYCLOAK_ADMIN_PASSWORD: admin
          KC_HOSTNAME_STRICT: false
          KC_EDGE: proxy
        ports:
          - 8080:8080
        image: quay.io/keycloak/keycloak:19.0.0
        network_mode: host
        depends_on:
          - postgres
        command:
          - start-dev --auto-build
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 2022-11-27
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 2020-03-13
      相关资源
      最近更新 更多