Timing docker build

The other morning, I was looking over a recent Jenkins build at work and realized that I had no idea why it took 5 minutes to build the container.  When using Assetic to build our assets, I can add a --profile flag and get line-by-line timings for each asset generated.  I wanted that for docker build.

After a little research, I discovered the answer in a StackOverflow post.  The ts program which is part of the moreutils package accepts data from a pipe and echos a timestamp plus the original text.

I tried running it but got a "command not found" error in my terminal.  To install the ts program, you need to install the moreutils package.  On my mac, I ran brew install moreutils.  If you're not on mac, you should be able to install it through your OS's package manager.

Now that I had the ts program installed, I was finally able to time my build.

λ ~/projects/foobar/ docker build . | ts
Sep 04 09:57:36 Sending build context to Docker daemon  4.096kB
Sep 04 09:57:36 Step 1/5 : FROM nginx:latest
Sep 04 09:57:36  ---> e445ab08b2be
Sep 04 09:57:36 Step 2/5 : WORKDIR /var/www/html
Sep 04 09:57:36  ---> Running in 045f73fdcb03
Sep 04 09:57:36 Removing intermediate container 045f73fdcb03
Sep 04 09:57:36  ---> 0cd92b8984a1
Sep 04 09:57:36 Step 3/5 : ADD index.html .
Sep 04 09:57:37  ---> a7f065a0e84d
Sep 04 09:57:37 Step 4/5 : USER www-data
Sep 04 09:57:37  ---> Running in e8058a99f42a
Sep 04 09:57:37 Removing intermediate container e8058a99f42a
Sep 04 09:57:37  ---> af9a4e545394
Sep 04 09:57:37 Step 5/5 : HEALTHCHECK CMD curl --fail http://localhost/ || exit 1
Sep 04 09:57:37  ---> Running in dffef986d061
Sep 04 09:57:37 Removing intermediate container dffef986d061
Sep 04 09:57:37  ---> 00c8c3bcbd61
Sep 04 09:57:37 Successfully built 00c8c3bcbd61
Show Comments

Get the latest posts delivered right to your inbox.