Dockerfileをビルドするタイミングを出力するようにDockerを設定することはできますか?Dockerビルドステップ時間の測定方法は?
私たちは中規模の開発チームを運営しており、開発者の開発コンテナの平均構築時間に関する統計を収集したいと考えています。
理想的には、個々のステップの持続時間を測定する必要があります。
Dockerfileをビルドするタイミングを出力するようにDockerを設定することはできますか?Dockerビルドステップ時間の測定方法は?
私たちは中規模の開発チームを運営しており、開発者の開発コンテナの平均構築時間に関する統計を収集したいと考えています。
理想的には、個々のステップの持続時間を測定する必要があります。
ツールtime
を使用してビルド時間を測定できます。例えば。
time docker build .
個別のビルドステップでは、それだけ難しくなります。各ステップの後にRUN date
コマンドで実行できますが、イメージに別のレイヤーが追加されます。だから、ちょっと面倒です。
ありがとう@tlo、私は 'time'をすぐに回避策として使用してきましたが、個々のステップでより細分化できることが大好きです。特に、キャッシュされたレイヤーのために特定のステップがスキップされた時期を知ることができます。 –
私はそれも疑問に思っていました。個々のステップで私が思いついた唯一の解決策は、各ステップの最後にdate +'%F %T'
を入れることです。
RUN set -x && apt-get update && date +'%F %T'
RUN apt-get install -y vim && date +'Time: %F %T'
出力:
Get:1 http://security.debian.org stretch/updates InRelease [63.0 kB]
...
Time: 2018-03-08 00:42:41
バッシュでは、bashのセッション開始からの時間を与えるecho $SECONDS
を使用することができます。またはtime (...)
(サブシェル)ですが、Dockerビルド環境はbash
ではなくsh
で実行されます。
私はこの質問を各 'RUN'コマンドのタイミングにまで広げます。 –