Keycloak 8:已添加用户名为“admin”的用户

use*_*967 35 jboss docker keycloak docker-compose

我无法使用 ansible 和 docker-compose 启动 keycloak 容器。我收到错误:用户名“admin”的用户已添加到“/opt/jboss/keycloak/standalone/configuration/keycloak-add-user.json”

我有 3 个可靠的工作:

创建网络:

- name: Create a internal network
  docker_network:
    name: internal
Run Code Online (Sandbox Code Playgroud)

设置 postgres:

- name: "Install Postgres"
  docker_compose:
    project_name: posgressdb
    restarted: true
    pull: yes
    definition:
      version: '2'
      services:
        postgres:
          image: postgres:12.1
          container_name: postgres
          restart: always
          env_file:
            - /etc/app/db.env
          networks:
            - internal
          volumes:
            - postgres-data:/var/lib/postgresql/data
            - /etc/app/createdb.sh:/docker-entrypoint-initdb.d/init-app-db.sh
          ports:
            - "5432:5432"
      volumes:
        postgres-data:
      networks:
        internal:
          external:
            name: internal
Run Code Online (Sandbox Code Playgroud)

创建密钥斗篷容器:

- name: Install keycloak
  docker_compose:
    project_name: appauth
    restarted: true
    pull: yes
    definition:
      version: '2'
      services:
        keycloak:
          image: jboss/keycloak:8.0.1
          container_name: keycloak
          restart: always
          environment:
            - DB_VENDOR=POSTGRES
            - DB_ADDR=postgres
            - DB_PORT=5432
            - DB_SCHEMA=public
            - DB_DATABASE=keycloak
            - DB_USER=keycloak
            - DB_PASSWORD=keycloak
            - KEYCLOAK_USER=admin
            - KEYCLOAK_PASSWORD=admin
          networks:
            - internal
      networks:
        internal:
          external:
            name: internal

Run Code Online (Sandbox Code Playgroud)

有谁知道为什么我会收到这个错误?

编辑

如果我将 keycloak 降级到版本 7,它会正常启动!

Tho*_*mas 53

只是为了澄清其他答案。我遇到过同样的问题。对我有帮助的是:

  1. 停止所有容器
  2. 注释掉两个相关的行

    version: "3"
    
    services:
      keycloak:
        image: quay.io/keycloak/keycloak:latest
        environment:
          # KEYCLOAK_USER: admin
          # KEYCLOAK_PASSWORD: pass
          ...
    
    Run Code Online (Sandbox Code Playgroud)
  3. 启动所有容器;

  4. 等待 keycloak 容器成功启动
  5. 再次停止所有容器
  6. 注释掉上面的两行

    version: "3"
    
    services:
      keycloak:
        image: quay.io/keycloak/keycloak:latest
        environment:
          KEYCLOAK_USER: admin
          KEYCLOAK_PASSWORD: pass
          ...
    
    Run Code Online (Sandbox Code Playgroud)
  7. 启动所有容器

这一次(以及随后的时间)它起作用了。Keycloak 正在运行,管理员用户已注册并按预期工作。

  • 这很有效,而且令人难以置信。也许是因为没有正确关闭容器。 (5认同)

Zme*_*mey 10

当 Keycloak 在启动过程中被中断时会发生这种情况。在此之后,尝试添加管理员用户的命令开始失败。在 Keycloak 7 中,这不是致命的,但在 8.0.1 中添加了这一行来/opt/jboss/tools/docker-entrypoint.sh中止整个启动脚本:

set -eou pipefail
Run Code Online (Sandbox Code Playgroud)

相关问题:https : //issues.redhat.com/browse/KEYCLOAK-12896


mbr*_*eat 10

注释掉这些KEYCLOAK_USER作品的原因是它强制重新创建容器。同样可以通过以下方式完成:

docker rm -f keycloak
docker compose up keycloak
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,这将删除从管理面板完成的所有配置 (2认同)

Wer*_*ner 7

根据我的发现,设置此默认用户的最佳方法不是通过环境变量添加它,而是通过以下命令:

docker exec <CONTAINER> /opt/jboss/keycloak/bin/add-user-keycloak.sh -u <USERNAME> -p <PASSWORD>
Run Code Online (Sandbox Code Playgroud)

根据官方文档


小智 6

我遇到过同样的问题。在 docker-compose 中注释掉 KEYCLOAK_USER 环境变量并更新堆栈后,容器再次启动。

docker_compose:
project_name: appauth
restarted: true
pull: yes
definition:
  version: '2'
  services:
    keycloak:
      image: jboss/keycloak:8.0.1
      container_name: keycloak
      restart: always
      environment:
        - DB_VENDOR=POSTGRES
        - DB_ADDR=postgres
        - DB_PORT=5432
        - DB_SCHEMA=public
        - DB_DATABASE=keycloak
        - DB_USER=keycloak
        - DB_PASSWORD=keycloak
        #- KEYCLOAK_USER=admin
        #- KEYCLOAK_PASSWORD=admin
      networks:
        - internal
  networks:
    internal:
      external:
        name: internal
Run Code Online (Sandbox Code Playgroud)