Docker 密钥斗篷8:用户名为';管理员';已经添加
我无法使用ansible和docker compose启动KeyClope容器。我收到一个错误:用户名为“admin”的用户已经添加到“/opt/jboss/keydrope/standalone/configuration/keydrope add User.json”中 我有3份可靠的工作: 创建netwrok: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
- 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
...
版本:“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个服务 我分两步解决了这个问题
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>