31

When I run a build using docker-compose build --progress plain, it shows more useful information during the build than the default BuildKit output.

Is there a way to embed the plain progress option into the docker-compose.yml file itself so I can just call docker-compose build and still get the better output?

I tried adding these build args, but none of them seemed to work:

build:
    args:
        #progress: plain  
        #- progress=plain  
        #- progress plain  
        #BUILDKIT_PROGRESS: plain  
        #- BUILDKIT_PROGRESS=plain  
Allan Jackson
  • 471
  • 1
  • 4
  • 10

5 Answers5

45

Where you don't want to disable buildkit, one can use

BUILDKIT_PROGRESS=plain docker compose build
# or
BUILDKIT_PROGRESS=plain docker-compose build

or without buildkit which serves plain progress by default

DOCKER_BUILDKIT=0 docker compose build
# or
DOCKER_BUILDKIT=0 docker-compose build

using docker desktop 20.10.8 + docker-compose 2.0.1

hasnat
  • 2,647
  • 1
  • 20
  • 23
  • This works for me! Last comment I had the same issue than @Artfaith `services.app.build Additional property progress is not allowed` – enriqueojedalara Dec 21 '22 at 05:30
7

Even though it seems like it ought to be possible looking at the current implementation of docker-compose, notably the _CLIBuilder which is invoked over the services dict's build method.

However, no such similarly-named key exists in the configuration schema.

So it appears that you can't, at least not yet.

Incidentally, from the above, I'd expect to eventually find it here

services:
    build:
        progress: plain

rather than the args: child key.

msanford
  • 11,803
  • 11
  • 66
  • 93
  • 3
    My workaround is to have docker-compose.yml reference the image `image: image-name` rather than doing `build` as part of compose. Then use a wrapper script that calls `docker build --progress plain -t image-name && docker-compose up` – AndrewKS Jun 11 '21 at 18:55
  • 6
    Just in case, currently, it still returns: `services.app.build Additional property progress is not allowed`. – Artfaith Sep 17 '22 at 12:27
2

For Compose V2. Refer to: Compose V2

Here is command originally shared by hasnat but modified to ComposeV2:

BUILDKIT_PROGRESS=plain docker compose build
Alexred
  • 176
  • 1
  • 9
0

apparently it is not possible using compose file, but if you need it to be done always like this, you can write a wrapper:

docker-compose(){
        echo "[WARNING] runnig wrapper docker-compose..."
        if [ "$1" == "build" ]; then
            /usr/local/bin/docker-compose $@ --progress plain
        else
            /usr/local/bin/docker-compose $@
        fi
}

add this code to your ~/.profile or ~/.bash_profile

then you can use it as usual

** remember source your profile after edit

Adán Escobar
  • 1,729
  • 9
  • 15
-3

It seems the docker-compose.yaml accepts an args field:

version: "3.8"
services:
  main:
    build:
      context: .
      dockerfile: se/Dockerfile
      args:
        progress: plain
Amin Shojaei
  • 5,451
  • 2
  • 38
  • 46