아무거나/진짜 아무거나

Docker에 sdkman이랑 pyenv 깔아서 자바랑 파이썬 쉽게 깔고 관리하기

톰거봉 2022. 7. 6. 11:40

Docker custom image 만들 때마다

필요한 자바 버전 맞춰깔고 파이썬 깔고 하는게 너무 귀찮았어서

ubuntu위에 sdkman이랑 pyenv을 쉽게 올릴 수 있는 템플릿을 만들었다

(Tistory는 Dockerfile syntax highlighting 지원을 안하넴 흑)

1. 일단 깔고 싶은 Python & Java version은 Environment variable로 설정해놓고..

FROM ubuntu:18.04

ENV DEBIAN_FRONTEND=noninteractive
ENV PYTHON_VERSION 3.9.1       # Python version
ENV JAVA_VERSION 8.0.302-open  # Java (JDK) version

2. 필요한 dependency님들 설치하고.. (sdkman 안깔거면 zip은 빼도됨)

# Set of all dependencies needed for SDKMAN and pyenv to work on Ubuntu
RUN apt-get update \ 
    && apt-get install -y --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget ca-certificates curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev mecab-ipadic-utf8 git vim bc unzip subversion perl zip

3. sdkman 다운로드 & 설치 (꽤 힘들게 얻은 코드,,,,)

# Install sdkman (SDK management tool)
RUN curl -s "https://get.sdkman.io" | bash
RUN bash -c "source $HOME/.sdkman/bin/sdkman-init.sh && sdk install java ${JAVA_VERSION} && sdk default java ${JAVA_VERSION}"
ENV JAVA_HOME="$HOME/.sdkman/candidates/java/current"

4. pyenv 설치

# Install pyenv (Python management tool)
ENV PYENV_ROOT /root/.pyenv
ENV PATH ${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}
RUN set -ex \
    && curl https://pyenv.run | bash \
    && pyenv update \
    && pyenv install ${PYTHON_VERSION} \
    && pyenv global ${PYTHON_VERSION} \
    && pyenv rehash

5. 합치면 아래처럼..

 

요렇게 하면 container안에서 이것저것 해볼 때

sdk install java <java_version>

pyenv install <python_version>

요렇게 쉽게 버전을 옮겨 다니며 쓸 수 있다ㅎㅎ 짱편함

자바 버전 여러개, 파이썬 버전 여러개 필요할 때도

다수 버전 깔아서 사용하면 되어서 좋다

 

+ 추가

설치 안되는 분들은 apt-get install 할 때 tar도 추가해보시길..

반응형