Dockerのpython公式Imageを使ってみた
経緯
今までDockerでPython3系を使う際、なんとなくpyenvを使っていたんだけど、よく考えたらPython公式のDockerImageあるんじゃね?と思い使ってみました。
Python公式Image
DockerHub / GitHub
DockerHubのPython公式。
https://hub.docker.com/_/python/
こちらがLatest。
python/Dockerfile at 8601079d1f70b03c01408377716a3243ce75cec9 · docker-library/python · GitHub
仕組み
DockerImageを遡って調べたところ、ベースのOSはDebianでした。
python:latest => buildpack-deps:stretch => buildpack-deps:stretch-scm => buildpack-deps:stretch-curl => debian:stretch
buildpack-depsについて & 各バージョンはこちら。
https://hub.docker.com/_/buildpack-deps/
また、上記のbuildpack-depsの各レイヤについては、こちらの記事でわかりやすく説明されています。
よかったこと
pyenvのInstallでDockerfileが汚れない
pyenvを使用していた時のDockerfileがこちら
FROM amazonlinux:latest RUN yum update -y && \ yum -y install \ gcc gcc-c++ make openssl-devel bzip2-devel zlib-devel readline-devel \ sqlite-devel patch findutils $extra_libs \ curl make wget less which procps \ && yum clean all && \ rm -rf /var/cache/yum RUN mkdir -p /home/.pyenv && \ curl -L https://github.com/pyenv/pyenv/archive/v1.0.10.tar.gz | \ tar xz -C /home/.pyenv --strip-components=1 ENV HOME /home ENV PYENV_ROOT $HOME/.pyenv ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH RUN pyenv install 3.6.6 RUN pyenv global 3.6.6
Python公式を使うとこう。
FROM python:3.6.6
OSはLinuxベースならなんでもオッケー、って感じであれば、後者を選ぶしかない。
DockerImageのbuildが早い
RUN pyenv install 3.6.6
のところで食っていた時間が不要になるので当然ではありますが、
やっぱり開発していくなかでbuildが早いのは嬉しいことです。
最後に
こりゃいいや、ということで、python公式Imageを元にしたDockerfileをポコポコ作ってはDockerHubに上げているので、よかったら使ってみてください。 https://hub.docker.com/u/ukwksk/