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の各レイヤについては、こちらの記事でわかりやすく説明されています。

qiita.com

 

よかったこと

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/