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/

Done is better than perfect.

はじめまして。ukwkskです。
さて、今までブログを開いては捨て、開いては捨てしてきた人間ですが、先ほど帰りの電車でやる気になったのでひとまず書いています。

まずやろう

ご存知の方も多いと思いますが、タイトルの "Done is better than perfect." は、Facebookの創業者であるマーク・ザッカーバーグの言葉とされています。

今までブログが始められなかった、続かなかった理由は、

  • 書く内容の方向性が決まってない
  • というか書くネタがない
  • せっかくなら独自ドメインにしたい
  • インフラ知識ついてきたしAWSで環境作るか!
  • ならWordpressとか勉強してみる?
  • あー設定めんどくなってきたな...

みたいな感じでした。

最近久しぶりにTwitterのTLに "Done is better than perfect." ネタが流れてきて、「とりあえずは環境とか気にせずに書けばいいんじゃね?」
と思ったりもしたので、いろいろと切り捨てた上で、はてぶでとりあえず記事を書いていこう!となったわけです。

やり直そうと思った理由

ネタができてきたし、ネタができそう

社会に出て、エンジニアという職能になって、2年強が経ちますが、結局私的に書いた記事はQiitaで6件。(いま見返したら思ったよりは書いてたけど)ちょっと少ないんじゃね?という感覚。その分githubめっちゃ更新してるとかでもないし。。。

でもそろそろできることも増えてきたし、ネタも少しずつ溜まってきた。書こうと思えばなにがしか書けるでしょう。

プラスで、なんか作りたいな、と思った時に、こういうもの作るよ(あるいは作ったよ)って伝える場ができたわけなので、「作ること」と「その結果や過程を伝えること」が相互に影響して、モチベが続くんじゃないかと。 例えば今パッと思いつく「作ること」は下記。

アウトプットの練習

この2年強は、業務的に少数で動くことが多く、施策や仕様などを人前で発表するという機会があまりありませんでした。 また、立ち上げ期の部署にいて変化が多いため、あまりかっちりとドキュメントを書く機会も少なかったです。

そうしていくうちに、人に何かを伝えること、要点をピックアップしてまとめることなど、大学で卒論修論を書いてたことより下手になってきている感覚がありました。
(社内Slackの分報も、ほぼTwitter的な使い方をしているので、短文とかURL貼るだけとか) そこで、ブログという形で発信をすることによって、ある程度の分量の内容を、他の人が理解できる形で伝えられる練習になるかな、と。

また、分報にURLを貼っているだけのものやTwitterでRTだけしているものについて、自分の考えをプラスして書くことで、アウトプット以前の思考の練習にもなると考えています。

基地的な位置づけ

上記で出てきたTwitterやQiita、その他Facebookや会社のブログなど、自分のアウトプットがいろんなところに散らばってしまっている感があるのが現状です。 もちろん会社というバックがあってこそできるものもありつつですが、とはいえ自分がアウトプットしたものが、外から見た時に繋がっていないのは結構損失なんじゃないかと思ったりもして。

なので、自分のアウトプットをブログに集約させることで、それが解消できればな、と思っています。

文章書くのちょっと楽しい

先月会社の技術ブログに一本投稿をした際に、それこそ修論ぶりくらいに文章を書いたのですが、楽しかった。笑 (分量でいうと全然修論の比じゃないですが)
しかし会社のブログだけだと、ネタや記事本体の審査があったり、テーマが絞られていたりしてそんなに頻繁には書けない。
じゃあ自分でブログ作っちゃえばいいじゃない!

書くこと

正直どれくらいの粒度で更新するか、どういう内容を記事にするかとか、全く決まっていません。

ただ、技術的な学びはある程度まとめて書きたい。
技術以外も学びや思考は書きたい。
せっかくなら日常のことも少し書きたい。 今週から始めた糖質制限のこととか。

という感じです。

むしろ最初はハードルの低さ的に日常系から始めるかもしれません。

ともあれ

やっていきしますので、よろしくお願いします。

Twitter twitter.com/ukwksk
Facebook www.facebook.com/ukwksk
Qiita qiita.com/ukwksk