LoginSignup
48
45

More than 5 years have passed since last update.

DockerでサクッとUbuntu+任意のPython環境を用意する

Last updated at Posted at 2018-12-09

動機

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
48
45
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
45