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도 추가해보시길..
반응형
'아무거나 > 진짜 아무거나' 카테고리의 다른 글
삶으로 다시 떠오르기 (2) | 2023.05.02 |
---|---|
싱가포르 NUS에서 프린트 하기 (1) | 2022.11.17 |
pyenv로 python 사용 시에 tkinter black screen 에러 혹은 Deprecation warning 해결하기 (2) | 2022.10.11 |
Bose QC45 충전 되었는데 안 켜질 때 리셋 하는 법 (+ 공장초기화 방법 추가) (18) | 2022.09.27 |
Python에서 Github API "rate limit exceeded" 에러 해결 위해 API 요청 한도 늘리기 (2) | 2022.03.01 |