Compose: Proposal: don't "build" as part of "docker-compose up"

Created on 2 Dec 2014  路  12Comments  路  Source: docker/compose

I've started to feel that doing a build during docker-compose up is potentially causing more trouble than it's worth, and I'm curious if anyone is actually using this functionality.

I believe this is a positive change for two reasons:

  1. Anytime I've used docker-compose up I've always had to explicitly docker-compose build first (and often docker-compose pull before that). This is because without doing an explicit build/pull, you risk running an older version of the image.
  2. Doing a build/pull as part of up starts to require that up support every parameter that build and pull require, which leads to more code complexity, and a less clean interface (see #687, #573, #586, which are probably just the start)

Does anyone actually "need" docker-compose up to build containers first? How do you ensure you're actually running the latest container if you don't do an explicit docker-compose build first?

This would be a non-backwards compatible change, so it would require waiting for a new major release.

arebuild kinfeature

Most helpful comment

+1. Principle of least surprise. It certainly surprised me that it didn't build if there had been change.

All 12 comments

Another option would be to default to no build/pull, but add a flag to enable a forced build/pull (even if the containers and images exist), and remove and build/pull flags from fig up.

Could we make it an option in a file?

Generally I'm in favor of pulling the build/pull step out and making it more explicit. I ran into a case last week where someone wasted days trying to debug a fig issue because they didn't understand that fig up wouldn't build the image like it did the first time (and they didn't have the files mounted in a volume etc.).

@nathanleclaire I believe that problem may have been the root cause of an issue I had a user report last week: https://github.com/md5/docker-postgis/issues/5#issuecomment-74353628

+1

I'm not sure if this proposal is still on the table, but I agree fig up building by default is one command doing too much. It forces the essential operation of running a container + port mapping + mounting volumes into assumptions that everyone will want to build first.

As a user, I would prefer commands to be more composable (no pun intended).

I can attest to the fact that it took me a while to figure out that fig up does not build the image the way that it does the first time around.

So I'm in favor of making it more explicit, and less like magic.

i propose this syntax:

$ docker-compose up --update [<services>]

and:

service:
  force_update: true

the design should be coherent with the forced pull when building an image as proposed in #726

:+1: to @funkyfuture 's idea of an --update option + a default of never building for docker-compose up.

+1. Principle of least surprise. It certainly surprised me that it didn't build if there had been change.

+1 to @funkyfuture's idea.

docker-compose up and docker-compose run should either build and rebuild all of the time, or never build and rebuild, instead of building sometimes which misleads the user.

A --update (which could also be called --rebuild) lets the user force the opposite behaviour.

Yes, we're planning on doing one of these for 1.6, and providing either a --build or --no-build (already exists) depending on which one gets implemented.

It's likely we'll be going with #12 and using the existing --no-build

I just ran into this issue as well, only by docker exec -it container bash and checking the file manually was I able to tell that the changes were not taking place. I think a flag would be an improvement but having a rebuild directive in the docker-compose.yaml would be welcomed. It could behave similarly to the restart directive.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

29e7e280-0d1c-4bba-98fe-f7cd3ca7500a picture 29e7e280-0d1c-4bba-98fe-f7cd3ca7500a  路  3Comments

squeaky-pl picture squeaky-pl  路  3Comments

foxx picture foxx  路  3Comments

davidbarratt picture davidbarratt  路  3Comments

bergtwvd picture bergtwvd  路  3Comments