動機
DockerでUbuntuに任意のPython実行環境を用意したい。出来るだけ簡単な方法で。ただし、condaは使いたくない。
実現方法
今回は、python-buildを利用。python-buildは、pyenvにバンドルされている、任意のPython実行環境を構築するプラグイン。
依存関係のインストール
必要なものをインストール
$ apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev
python-buildのインストール
以下で/usr/local/bin
にpython-buildがインストールされる
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ cd ~/.pyenv/plugins/python-build
$ ./install.sh
Python実行環境のインストール
バージョンとインストール先はお好みで。ここでは、バージョンを3.7.1
、インストール先を~/local/python-3.7.1
に指定。
途中経過が不要なら-v
オプションはなしで。
$ /usr/local/bin/python-build -v 3.7.1 ~/local/python-3.7.1
pyenvのアンインストール
Dockerコンテナ内でPythonのバージョンを切り分ける必要はないので、不要になったpyenvはアンインストールしておく。
$ rm -rf ~/.pyenv
パスを通す
$ echo 'export PATH="$HOME/local/python-3.7.1/bin:$PATH"' >> ~/.bashrc
Dockerfile
最初のところの環境変数でバージョン・インストール先を書き換えるだけでサクッと環境構築。
Dockerfile
FROM ubuntu:16.04
ENV PYTHON_VERSION 3.7.1
ENV HOME /root
ENV PYTHON_ROOT $HOME/local/python-$PYTHON_VERSION
ENV PATH $PYTHON_ROOT/bin:$PATH
ENV PYENV_ROOT $HOME/.pyenv
RUN apt-get update && apt-get upgrade -y \
&& apt-get install -y \
git \
make \
build-essential \
libssl-dev \
zlib1g-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
wget \
curl \
llvm \
libncurses5-dev \
libncursesw5-dev \
xz-utils \
tk-dev \
libffi-dev \
liblzma-dev \
&& git clone https://github.com/pyenv/pyenv.git $PYENV_ROOT \
&& $PYENV_ROOT/plugins/python-build/install.sh \
&& /usr/local/bin/python-build -v $PYTHON_VERSION $PYTHON_ROOT \
&& rm -rf $PYENV_ROOT