【问题标题】:Install sdkman in docker image在 docker 镜像中安装 sdkman
【发布时间】:2018-12-06 17:13:36
【问题描述】:

Ubuntu 16.04 docker 映像中安装SDKMAN! 时出错。

FROM ubuntu:16.04
RUN apt-get update
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN apt-get -qq -y install curl
RUN curl -s https://get.sdkman.io | bash
RUN chmod a+x "$HOME/.sdkman/bin/sdkman-init.sh"
RUN source "$HOME/.sdkman/bin/sdkman-init.sh"

【问题讨论】:

    标签: docker ubuntu sdk docker-compose


    【解决方案1】:

    TL;DR

    安装unzip & zip,表示改变

    RUN apt-get -qq -y install curl
    

    RUN apt-get -qq -y install curl unzip zip
    

    或更好

    RUN apt-get -qq -y install \
        curl \
        unzip \
        zip
    

    说明

    当你尝试构建 Dockerfile 时,你会得到

        .....
    
        Step 5/6 : RUN curl -s https://get.sdkman.io | bash
        ---> Running in 1ce678a59561
    
        --- SDKMAN LOGO ---
    
        Now attempting installation...
    
        Looking for a previous installation of SDKMAN...
        Looking for unzip...
        Not found.
        ======================================================================================================
        Please install unzip on your system using your favourite package manager.
    
        Restart after installing unzip.
        ======================================================================================================
    
        Removing intermediate container 1ce678a59561
        ---> 22211eafd50c
        Step 6/6 : RUN source "$HOME/.sdkman/bin/sdkman-init.sh"
        ---> Running in 1c5cb7d79ef0
        /bin/sh: /root/.sdkman/bin/sdkman-init.sh: No such file or directory
        The command '/bin/sh -c source "$HOME/.sdkman/bin/sdkman-init.sh"' returned a non-zero code: 1
    

    你需要做的就写在那里。这部分:

        ======================================================================================================
        Please install unzip on your system using your favourite package manager.
    
        Restart after installing unzip.
        ======================================================================================================
    

    当您安装 unzip 时,您会遇到与 zip 相同的错误。安装后一切正常。

    所以,请阅读您的日志/命令输出。 :-)


    *附注如果curl -s https://get.sdkman.io | bash 以非零代码退出会更好。这样它会在下一个命令上失败。但这不是您可以解决的问题;) *

    【讨论】:

      【解决方案2】:

      确保你有 curl、wget、unzip 和 zip。有了它们,我就可以成功安装 Sdkman。以下是我的 Docker 内容

      FROM ubuntu:18.04
      
      RUN apt-get update
      RUN rm /bin/sh && ln -s /bin/bash /bin/sh
      RUN apt-get -qq -y install curl wget unzip zip
      
      RUN curl -s "https://get.sdkman.io" | bash
      RUN source "$HOME/.sdkman/bin/sdkman-init.sh"
      

      【讨论】:

      • 不使用wget为什么?
      【解决方案3】:

      看起来sdkman 安装失败。 当我在上面运行您的代码时,它抱怨缺少 unzipzip 包。

      满足依赖关系后,您还需要将 init 脚本标记为可执行:

      chmod a+x "$HOME/.sdkman/bin/sdkman-init.sh"
      

      所以你的 Dockerfile 应该是这样的:

      FROM ubuntu:16.04
      RUN apt-get update
      RUN rm /bin/sh && ln -s /bin/bash /bin/sh
      RUN apt-get -q -y install curl zip unzip
      RUN curl -s https://get.sdkman.io | bash
      RUN chmod a+x "$HOME/.sdkman/bin/sdkman-init.sh"
      RUN source "$HOME/.sdkman/bin/sdkman-init.sh"
      

      P.S:一拳打死!

      【讨论】:

      • 我在构建过程中找不到 sdk 命令,如果在您的回答中的这些步骤之后我需要从 sdkman 安装库,是否缺少一些东西?
      【解决方案4】:
      FROM ubuntu:16.04
      RUN apt-get update
      RUN apt-get -qq -y install \
          curl \
          unzip \
          zip
      RUN rm /bin/sh && ln -s /bin/bash /bin/sh
      RUN apt-get -qq -y install curl
      RUN curl -s https://get.sdkman.io | bash
      RUN chmod a+x "$HOME/.sdkman/bin/sdkman-init.sh"
      
      RUN source "$HOME/.sdkman/bin/sdkman-init.sh"
      

      【讨论】:

      • FROM ubuntu:16.04 RUN apt-get update RUN apt-get -qq -y install \ curl \ unzip \ zip RUN rm /bin/sh && ln -s /bin/bash /bin/sh RUN apt-get -qq -y install curl RUN curl -s https://get.sdkman.io | bash RUN chmod a+x "$HOME/.sdkman/bin/sdkman-init.sh" RUN source "$HOME/.sdkman/bin/sdkman-init.sh"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      相关资源
      最近更新 更多