SIer Retirement Engineer

日記です。

Dockerfile放浪記

本記事は、ストックマーク Advent Calendar 2021 - Adventarの8日目の記事です。

青春篇

炊飯器の早炊きが15分の壁を越え、3分の代名詞だったカップラーメンは1分タイプの商品が出回るようになり、花金じゃなくたって秒で退勤するこのご時世に、45分とはいかがなものか。

スプリントという煩悩から解脱して良い週末を迎えようと、リリースを金曜日に置いているAstrategyチームにとって、たまに思い出したようにやってくるあいつは1番のガンかもしれない。

GCPバッチのコンテナビルド。

洋の東西を問わず、自然言語処理で1番を自負する弊社にとって避けては通れない、あんちくしょう。

風雲編

EFSを使ってアプリケーションの変更でビルドが走らないようにしてみたり、速いと聞いたpoetryを導入するため長年連れ添ったrequirements.txtを無慈悲に切り捨ててみたり、そもそもたまにしか来ないのだからそんなにムキになる必要もないんだよと自分自身をごまかしてみたりしてきたけれど。

何をやっても効果が見られず、忘れた頃にやってきて、解脱を阻む煩悩タイムをレイアップシュートよろしく置いていく。あの憎いあんちくしょうに一矢報いてやろうと決心したのは、スプリントの改善チケットを切ったのが自分だからでも、アドベントカレンダーのいいネタが思いつかなかったからでもなく、有史より拙速を尊んできた人類として、先の例にもあるような先人達の足跡をここで絶やす事はできないと、Amazon(Web Service、以下AWS)の奥地に向かう覚悟を決めたからである。

激闘編

GitHubという門をくぐりプラチナチケットの如きDockerfileを開いてみれば、ただツラツラと上から下までヒラで書かれたその様が、出目徳、ドサ健、坊や哲を向こうに回し、上州虎を後ろに置いて、今日はなんだか調子がいいぞと、ヒラで打ってる素人の、自分語りのように見えて泣きたくなった。

その地獄行きの片道切符を3枚におろしてマルチステージ・ビルドにすれば美味しくいただけるようになるのだが、いったい自分は何を書いているのだろうという思いが交錯して手が止まりそうになる。でも書き上げるしかない。だってもう4:00だもの。

ログを編集してコマンドラインの説明をしたり、おしゃれな画像でこのコラムを飾るのはもう諦めた。ただ、結果だけお伝えします。大きな変更もなく連続して実行したので参考程度にしかなりませんが、CircleCIのconfig.ymlでBuildKitやdocker_layer_cacheingを有効にして—cache-fromに中間イメージを指定してみたら、45mが45sになりました。

番外編

久しぶりに串カツ田中で浴びるほど飲んでデロンデロンになり、終電で大幅に寝過ごして高くついたタクシー代とチンチロハイボールが何かうまいこと作用して連想された麻雀放浪記〜Classic〜を家の本棚から引っ張り出しウツラウツラと読み始めたのが2:00ちょっと前。気を取り直して—cache-fromにマルチステージ・ビルドの中間イメージを指定するあたりのログを見ながら、目を覚まそうとお風呂でチャプンチャプンしてたのが3:00過ぎくらい。今現在はコクリコクリと再来した睡魔に屈しようとしています。

同時に改善したはずのCPUバッチはキャッシュがあまり効いてなかったり、BuildKitやdocker_layer_cacheing、—cache-fromの何が1番効いたかを個別に確かめる気もなかったりしますが、AWSの奥地に向かう雰囲気どころか覚悟も既に無くしているのでもう勘弁してください。

こんな内容で良いのかなという漠然とした不安はありますが、清濁併せ呑む新たな覚悟と押し寄せる眠気で気付かなかったことにして、本日はこのへんでおイトマさせていただきます。