【问题标题】:Install Sdkman in an Alpine based Docker Image在基于 Alpine 的 Docker 映像中安装 Sdkman
【发布时间】:2020-08-10 07:50:06
【问题描述】:

我需要在基于 Alpine 的 docker 映像中安装 Sdkman,但存在默认 shell 不是 Bash 的问题。然后命令:

source "$HOME/.sdkman/bin/sdkman-init.sh"

以失败告终:

/bin/sh: /root/.sdkman/bin/sdkman-init.sh: line 40: SDKMAN_PLATFORM+=64: not found 

【问题讨论】:

    标签: docker alpine sdkman


    【解决方案1】:

    您需要将 SDKMAN 的安装和运行 init 脚本拆分为两个 RUN 块,例如

    RUN apk add bash curl git zip && \
      curl -s "https://get.sdkman.io" | bash
    RUN bash -c "source $HOME/.sdkman/bin/sdkman-init.sh && sdk version"
    

    来源:https://e.printstacktrace.blog/using-sdkman-as-a-docker-image-for-jenkins-pipeline-a-step-by-step-guide/

    【讨论】:

    • 如果出于其他原因不需要“git”包,您可以删除它。文档指出“您需要一个基本工具链,包括 bash、zip、unzip 和 curl(特殊情况需要 tar 和 gzip)”。 Git 是 Windows 用户的第三种选择。见sdkman.io/install