Docker 密钥斗篷8:用户名为';管理员';已经添加

Docker 密钥斗篷8:用户名为';管理员';已经添加,docker,jboss,docker-compose,keycloak,Docker,Jboss,Docker Compose,Keycloak,我无法使用ansible和docker compose启动KeyClope容器。我收到一个错误:用户名为“admin”的用户已经添加到“/opt/jboss/keydrope/standalone/configuration/keydrope add User.json”中 我有3份可靠的工作: 创建netwrok: - name: Create a internal network docker_network: name: internal 设置postgres: - name

我无法使用ansible和docker compose启动KeyClope容器。我收到一个错误:用户名为“admin”的用户已经添加到“/opt/jboss/keydrope/standalone/configuration/keydrope add User.json”中

我有3份可靠的工作:

创建netwrok:

- name: Create a internal network
  docker_network:
    name: internal
设置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
创建密钥斗篷容器:

- 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

有人知道我为什么会犯这个错误吗

编辑


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

我也有同样的问题。在docker compose中注释掉keydape_USER env变量并更新堆栈后,容器再次启动

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

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

set -eou pipefail

相关问题:

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

  • 停止所有容器
  • 注释掉两条相关的线

    版本:“3”
    服务:
    钥匙斗篷:
    图片:码头。io/keydove/keydove:latest
    环境:
    #密钥斗篷用户:管理员
    #密码:pass
    ...
    
  • 启动所有容器

  • 等待直到KeyClope容器成功启动
  • 再次停止所有容器
  • 在上面的两行中回复注释

    版本:“3”
    服务:
    钥匙斗篷:
    图片:码头。io/keydove/keydove:latest
    环境:
    密钥斗篷用户:管理员
    密码:pass
    ...
    
  • 启动所有容器

  • 这一次(以及随后的几次)它奏效了。KeyClope正在运行,管理员用户已注册并按预期工作。

    我已通过as尝试了该解决方案,但有时有效,有时无效

    问题是引导时的keydape找不到所需的db,所以正如前面提到的,它会被中断。您是否尝试过在第二份ansible工作中添加
    取决于:-postgres


    同样的问题是docker compose,我首先从postgres容器开始创建必要的dbs(手动步骤)
    docker compose up postgres
    ,然后我启动了整个设置
    docker compose up

    ,您也可以停止容器并简单地删除相关卷

    如果您不知道wiwh卷与KeyClope容器关联,请运行:

    docker向下撰写
    对于卷,单位为$(docker volume ls——格式{{.Name});做
    docker卷rm$vol
    完成
    
    我克服这个问题的方法是在容器文件系统中用
    #set-eou pipefail
    替换
    set-eou pipefail

    以root用户身份登录我的docker主机,然后编辑此搜索返回的每个文件:

    find /var/lib/docker/overlay2 | grep /opt/jboss/tools/docker-entrypoint.sh
    

    Thomas Solutions很好,但重新启动所有容器并重新启动毫无价值,因为我的docker compose文件有7个服务

    我分两步解决了这个问题

  • 首先,我像其他人一样推荐这两行代码
  • 然后我运行这个命令,它就可以工作了
  • docker组装钥匙斗篷


    KeyDope是一个ServiceName

    我使用KeyDope 12,当启动被中断时,我仍然看到这个问题。我可以看到,删除文件“keydape add user.json”并重新启动容器是可行的

    想法是将此逻辑集成到容器启动中。我开发了一个简单的自定义入口点脚本

    #!/bin/bash
    set -e
    
    echo "executing the custom entry point script"
    
    FILE=/opt/jboss/keycloak/standalone/configuration/keycloak-add-user.json
    if [ -f "$FILE" ]; then
        echo "keycloak-add-user.json exist, hence deleting it"
        rm $FILE
    fi
    echo "executing the entry point script from original image"
    source  "/opt/jboss/tools/docker-entrypoint.sh"
    
    我还确保通过对入口点的适当调整来重建KeyClope图像 在初始部署期间在Dockerfile中

    ARG DEFAULT_IMAGE_BASEURL_APPS
    
    FROM "${DEFAULT_IMAGE_BASEURL_APPS}/jboss/keycloak:12.0.1"
    
    COPY custom-entrypoint.sh /opt/jboss/tools/custom-entrypoint.sh
    
    ENTRYPOINT [ "/opt/jboss/tools/custom-entrypoint.sh" ]
    

    由于我们的部署是基于前提的,因此访问开发团队并不是那么容易。我们的一线支持所能做的就是尝试重新启动我们部署的服务器。因此产生了这种解决方法。

    我在Docker中运行KeyClope“jboss/KeyClope:11.0.3”时遇到了这个问题,错误:

    用户名为“admin”的用户已添加到“/opt/jboss/keydove/standalone/configuration/keydove add User.json”中

    Adicional info也在Docker中与PostgreSQL v13.2一起运行。我为其他资源创建了一些模式,但我没有为KeyClope创建模式,因此解决方案是针对我的情况,在postgres中运行create schema命令

    CREATE SCHEMA IF NOT EXISTS keycloak AUTHORIZATION postgres;
    
    

    注意:希望这有帮助,本文中共享的其他解决方案都没有解决我的问题。

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

    docker exec <CONTAINER> /opt/jboss/keycloak/bin/add-user-keycloak.sh -u <USERNAME> -p <PASSWORD>
    
    docker exec/opt/jboss/keydove/bin/add-user-keydove.sh-u-p
    

    根据。

    这发生在我身上,当时我曾关闭Portainer中的KeyClope容器,试图让它们重新启动并运行


    我还可以在关闭容器(在Portainer中)后“删除”容器,然后运行
    docker compose up
    ,以防止出现错误。确保不要删除附加到容器上的任何卷,否则可能会丢失数据。

    该用户可能在上次运行时就在那里。Clean postgres data volume=从头开始创建数据库。@JanGaraj不,不是。我运行ansible playbook on clean environment,但仍然得到相同的错误。我遇到了相同的问题。删除所有docker容器和图像并重新下载它们以某种方式解决了问题。@cib如果容器停止,然后重新启动,它似乎会崩溃。产生了一个问题:这很有效,很难相信。可能是因为没有正确关闭容器。此脚本将删除所有docker卷,而不仅仅是KeyClope容器的卷。您保存了我的日期谢谢,我当前的安装没有数据库(是KeyClope独立映像)。要恢复,我需要1。通过
    docker commit my keydape container
    d创建新映像
    
    docker exec <CONTAINER> /opt/jboss/keycloak/bin/add-user-keycloak.sh -u <USERNAME> -p <PASSWORD>