[go][python] 依存パッケージのファイルは先にCOPYしてdocker buildを高速化する

docker buildすると依存パッケージのインストールが走ります。

理想的には依存パッケージに変更がなければ依存パッケージのインストールはキャッシュしたいところです。

しかしながらうまくDockerfileを作らないと毎回docker build時に依存パッケージのインストールが走ってしまいます。

依存パッケージのインストールをキャッシュするためには依存パッケージを記述したファイルのみ、先にCOPYしてパッケージのインストールを行います。
ソースコードはDockerfileの最後の方でCOPYします。
こうすることでソースコードに変更が合った場合、依存パッケージのインストールはキャッシュされ、ソースコードのコピーのみ処理が走ります。

goの場合、depパッケージマネージャを使うならGoPkg.tomlとGoPkg.lockのみ先にコピーします。
パッケージインストール時はdep ensure -vendor-only=trueにすることでソースコードの解析が走らずにパッケージのインストールが走ります。dep ensureのみで実行してしまうと、この部分がソースコードに依存してしまうのでソースコードに変更があるとパッケージの再インストールが走ってしまいます。

サンプル

https://github.com/garicchi/docker-sample

 

garicchi
対話システムとSFとアニメが好き たまにMicrosoftコミュニティに出現します たまに日経Linuxとラズパイマガジンで記事を書いたり Microsoft MVP 2014~2018(引退済み)

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください