M1mac不能运行jboss/keycloakdocker图片

M1 mac cannot run jboss/keycloak docker image

一周前切换到 m1 mac,我无法启动我的应用程序并且 运行 docker 因为 jboss/keycloak 图像没有按预期工作。尝试访问 localhost:8080

时从容器中获取以下消息
12:08:12,456 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001: Failed to start service org.wildfly.network.interface.private: org.jboss.msc.service.StartException in service org.wildfly.network.interface.private: WFLYSRV0082: failed to resolve interface private

12:08:12,526 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([("interface" => "private")]) - failure description: {"WFLYCTL0080: Failed services" => {"org.wildfly.network.interface.private" => "WFLYSRV0082: failed to resolve interface private"}}

12:08:13,463 ERROR [org.jboss.as] (Controller Boot Thread) WFLYSRV0026: Keycloak 12.0.4 (WildFly Core 13.0.3.Final) started (with errors) in 20826ms - Started 483 of 925 services (54 services failed or missing dependencies, 684 services are lazy, passive or on-demand)

尝试了所有图像版本,所有版本的行为都相同。有没有人设法运行这张图片没有问题?谢谢

使用此映像,我现在可以启动 keycloak。 https://hub.docker.com/r/wizzn/keycloak

您也可以在本地构建 keycloak docker 映像,之后我可以启动 keycloak。这是我遵循的步骤;

  1. 克隆 Keycloak 容器存储库:git 克隆 git@github.com:keycloak/keycloak-containers.git
  2. 打开服务器目录(cd keycloak-containers/server)
  3. 以所需版本签出,例如。 git结帐 12.0.4
  4. 构建docker图像docker构建-tjboss/keycloak:12.0.4.
  5. 运行 Keycloak docker 运行 --rm -p 9080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak:12.0.4

我没有 mac,但我最近才开始使用 jboss/keycloak,并且能够开始使用它。

基本上我所做的(假设安装了 docker):

docker pull jboss/keycloak:16.1.0 
docker run --env-file targetDB.txt -p 8080:8080 jboss/keycloak:16.1.0

可能必须使用 sudo

执行这些命令

这会从 docker 集线器中提取 jboss/keycloak 图像,然后 运行 它将容器内的端口 8080 暴露给主机 machine。它还使用 .txt 文件中的环境变量(其中包含有关您希望将 keycloak 连接到持久数据的数据库端点的信息)。

如果您不指定 --env-file <text file> 我相信 keycloak 使用其默认的 h2 数据库,这不是最好的。

我的本地 jboss/keycloak 指向我在 AWS RDS 环境中的 postgres 数据库,所以 targetDB.txt 的内容对我来说是:

DB_VENDOR=postgres
DB_ADDR=<my postgres aws rds endpoint>:5432
DB_DATABASE=<name of the database>
DB_USER=<db username to connect to postgres instance>
DB_PASSWORD=<password associated with db username to connect>

如果我没记错的话,DB_DATABASE 字段中的数据库名称必须已经存在。因此,您需要在 运行 执行 docker 运行 命令之前创建它。

执行上面的 docker 运行 命令并且日志显示它正在启动后,您应该能够在本地浏览器上访问 keycloak 管理控制台:

http://localhost:8080/auth

如果这是您第一次 运行ning keycloak,您必须先创建一个 master/admin 用户才能登录。

要添加主用户,运行 这些命令(当您的 keycloak 已经 运行ning 时):

docker exec <container id or container name> /opt/jboss/keycloak/bin/add-user-keycloak.sh -u <USERNAME> -p <PASSWORD>

然后你需要重启你的keycloak容器:

docker restart <container id or container name>

同样,您可能需要使用 sudo 执行这些命令。

完成后,返回您的本地网络浏览器http://localhost:8080/auth,您现在可以访问登录页面并使用您在上面创建的用户名和密码实际登录。

我用的是 m1,我 运行 这个很管用。

docker run --platform=linux/amd64 -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:17.0.0 start-dev

我只是将 --platform=linux/amd64 添加到他们在 https://www.keycloak.org/getting-started/getting-started-docker

中找到的 docker 命令

jboss/keycloak暂时不支持arm64。 但您可以在 docker 中心使用该图像:mihaibob/keycloak

https://hub.docker.com/r/mihaibob/keycloak

我在用这个,没啥区别

构建 quarkus 版本的 keycloak 的位置已更改,因此此方法将不再适用于大于 16 的任何主要版本。但以下脚本可以。只需将其保存为 sh 即可。文件并在您的终端中执行它。通过启用最后一行,这也将直接启动一个 Keycloak 实例。 版本号可以改,不过这个只针对M1芯片和17.0.0版本测试过。

VERSION=17.0.0 # set version here

cd /tmp
git clone git@github.com:keycloak/keycloak.git
cd keycloak/quarkus/container
git checkout $VERSION
docker build -t "quarkus-keycloak:$VERSION" .
#docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin "quarkus-keycloak:$VERSION" start-dev --http-relative-path /auth

对于 Keycloak 16、docker 20.10 和 docker-compose 1.29,此图像完美运行:https://hub.docker.com/r/sleighzy/keycloak - 正如@zakjan 所建议的。

服务如:

  keycloak:
    image: sleighzy/keycloak
    environment:
      ... your Keycloak config

起床应该够了运行。

此问题已更新 - AMD64 和 ARM64 架构的图像现已可用,可在此处找到:https://quay.io/repository/keycloak/keycloak?tab=tags

参考 Github (https://github.com/keycloak/keycloak-containers/issues/341 and https://github.com/keycloak/keycloak/issues/8825) 中的讨论。