You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Keycloak Docker镜像添加curl、jq等额外应用?

扩展Keycloak Docker镜像添加工具的解决方案

一、解决添加curl、jq等工具的问题

你尝试的多阶段构建失败,核心原因是仅复制了二进制文件,缺少对应的依赖库。可以通过以下步骤修复:

  1. 确定Keycloak镜像的基础系统
    先运行命令查看镜像的系统信息:
docker run --rm quay.io/keycloak/keycloak:latest cat /etc/os-release

当前官方Keycloak镜像大多基于Red Hat UBI(Universal Base Image),比如ubi9-minimal。

  1. 优化多阶段构建,复制二进制+依赖库
    根据基础系统选择对应的builder镜像,完整复制工具及其依赖:
# 以ubi9-minimal为例,匹配Keycloak的基础系统
FROM registry.access.redhat.com/ubi9/ubi-minimal as builder
# 安装curl、jq并清理缓存
RUN microdnf update -y && microdnf install -y curl jq && microdnf clean all

# 准备临时目录存放要复制的文件
RUN mkdir -p /tmp/toolkit/bin /tmp/toolkit/lib64
# 复制二进制文件
COPY --from=builder /usr/bin/curl /tmp/toolkit/bin/
COPY --from=builder /usr/bin/jq /tmp/toolkit/bin/
# 复制curl的依赖库
RUN ldd /usr/bin/curl | awk '/=>/ {print $3}' | xargs -I {} cp -v {} /tmp/toolkit/lib64/
# 复制jq的依赖库
RUN ldd /usr/bin/jq | awk '/=>/ {print $3}' | xargs -I {} cp -v {} /tmp/toolkit/lib64/

# 目标镜像:官方Keycloak镜像
FROM quay.io/keycloak/keycloak:latest
# 将工具和依赖复制到对应路径
COPY --from=builder /tmp/toolkit/bin/* /usr/bin/
COPY --from=builder /tmp/toolkit/lib64/* /lib64/

构建这个Dockerfile后,镜像里就能正常使用curl和jq。

二、查找Keycloak镜像的Git仓库

官方Keycloak镜像的构建代码集成在Keycloak主仓库中,仓库内的docker目录包含不同基础系统(如UBI、Fedora)的镜像构建配置文件。你可以直接修改这些配置,添加所需工具后自行构建镜像。

内容的提问来源于stack exchange,提问作者Jayser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 10:53:21