Python 3.7.2開発環境構築のためのDockerfileを書いてみる。

DockerでPython 3.7.2プログラミングのための開発環境を構築するために、以下のようなDockerfileを書きました。

■Dockerfile

# Python 3.7.2 develop

FROM python:3.7.2
RUN pip install --upgrade pip
RUN pip install ipython numpy

# py.shはコマンドライン引数の個数を判定して、
# コンテナで起動するプログラムを切り替えるシェルスクリプト
COPY py.sh /

ENTRYPOINT ["/py.sh"]

py.shは、コマンドライン引数の数を見て、コンテナで起動するプログラムを切り替えるためのスクリプトです。

コマンドライン引数が0個のとき) ipythonを起動
コマンドライン引数が1個以上のとき) 第一引数をPythonスクリプトファイルとみなして、プログラムを走らせる

py.shの中身は次のようになります。

■py.sh

#!/bin/bash

PYTHON=/usr/local/bin/python
IPYTHON=/usr/local/bin/ipython
PG=pg

if [ $# -eq 0 ]; then
    $IPYTHON
else
    $PYTHON "/$PG/$1"
fi

そして、ビルド。

$ docker build -t python372 .

プログラムを動かすには、以下のようにコマンド入力します。

Pythonスクリプトを動かす時。

$ docker run --rm python372 sample.py

ipythonを動かす時。

$ docker run -it --rm python

もう少しコマンド入力が楽になるように、シェルスクリプトを書きました。

■runpy.sh

#!/bin/bash
# ipythonを起動する時
# ./runpy.sh
#
# Pythonスクリプトを起動する時
# ./runpy.sh sample.py

DOCKER=/usr/bin/docker

if [ $# -eq 0 ]; then
    $DOCKER run --rm -it python372
elif [ $# -eq 1 ]; then
    $DOCKER run --rm -v $(pwd):/pg python372 $1
else
    echo "引数の数が違います"
fi