Install sdkman in docker image

蓝咒 提交于 2020-06-17 15:17:27

问题


Getting error while installing SDKMAN! in Ubuntu 16.04 docker image.

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"

回答1:


make sure you have curl, wget, unzip & zip. With them I am able to install Sdkman successfully. Following is my Docker content

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"



回答2:


It looks like the sdkman install failed. When I ran your code above it complained about missing the unzip and zip packages.

After satisfying the dependencies, you'll also need to mark the init script as executable with:

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

So your Dockerfile should look something like:

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: Beaten to the punch!




回答3:


TL;DR

Install unzip & zip, that means change

RUN apt-get -qq -y install curl

to

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

or better

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

Explenation

When you try to build the Dockerfile, you will get

    .....

    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

What you need to do is written just there. This part:

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

    Restart after installing unzip.
    ======================================================================================================

When you install unzip you get the same error with zip, after installing it, everything works fine.

So, read your logs/command output. Especially here it's really clearly visible :-)


*P.S. It would be definitely better if curl -s https://get.sdkman.io | bash exited with non-zero code. This way it fails on the next command. But that is not a thing you can fix ;) *




回答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"


来源:https://stackoverflow.com/questions/53656537/install-sdkman-in-docker-image

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!