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