Page cover

🍪容器镜像

可以参考如下这个项目:

https://github.com/yangsijie666/keycloak-dingtalk-social-identity-provider

该项目实现了自定义 Keycloak IDP,用于支持钉钉登陆。

看下该项目的容器镜像打包 Dockerfile:

FROM maven:3.8-openjdk-17 AS builder
WORKDIR /app
COPY pom.xml /app
COPY ./settings.xml /usr/share/maven/conf/settings.xml
RUN mvn verify --fail-never -s /usr/share/maven/conf/settings.xml
COPY . /app
RUN mvn clean install -s /usr/share/maven/conf/settings.xml

FROM quay.io/keycloak/keycloak:23.0.7 as kcbuilder

# Enable health and metrics support
ENV KC_HEALTH_ENABLED=true
ENV KC_METRICS_ENABLED=true

WORKDIR /opt/keycloak
COPY --from=builder --chown=keycloak:keycloak /app/target/*.jar /opt/keycloak/providers/
RUN /opt/keycloak/bin/kc.sh build

FROM quay.io/keycloak/keycloak:23.0.7
COPY --from=kcbuilder /opt/keycloak/ /opt/keycloak/
ENTRYPOINT [ "/opt/keycloak/bin/kc.sh" ]

其中 1 ~ 7 行是在构建插件 jar 包,不用管;

12 ~ 13 行开启 HA 环境下需要用到的 /health/ready/health/live/health/started/metrics ,分别为存活探测和暴露监控指标;

16 行将构建的 jar 包放入 Keycloak 指定目录中;

17 行执行 build 命令;

19 ~ 21 行将 build 后生成的所有文件覆盖至当前目录下,形成运行用的容器。

🤨 19 ~ 21 行为何需要多此一举,没搞懂

后续就是将容器构建,推送至镜像仓库,这里就不赘述了。

最后更新于

这有帮助吗?