如何为Keycloak Docker镜像添加curl、jq等额外应用?
扩展Keycloak Docker镜像添加工具的解决方案
一、解决添加curl、jq等工具的问题
你尝试的多阶段构建失败,核心原因是仅复制了二进制文件,缺少对应的依赖库。可以通过以下步骤修复:
- 确定Keycloak镜像的基础系统
先运行命令查看镜像的系统信息:
docker run --rm quay.io/keycloak/keycloak:latest cat /etc/os-release
当前官方Keycloak镜像大多基于Red Hat UBI(Universal Base Image),比如ubi9-minimal。
- 优化多阶段构建,复制二进制+依赖库
根据基础系统选择对应的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
相关产品推荐
相关产品推荐

