Submit Your Ideas

We want to hear from you - vote for the features and improvements you'd most like to see, or submit your own ideas if you don't find them already listed.

Dependencies between docker instances when using docker exector

We're using the docker executor type for many of our Circle Enterprise builds:

https://circleci.com/docs/2.0/executor-types/

We love the faster start up time, but the consequence has been more flaky builds because we can't describe dependencies between the dockers as we can with docker-compose.

The difference between the machine and docker executors is 8x build times.  On average our build times went from 8min to 1min.  This is great when they actually run, but the flakiness makes it practically unusable.

Building new docker containers with waitforit or something similar installed is not an option for us.

 

  • Avatar32.5fb70cce7410889e661286fd7f1897de Guest
  • Mar 14 2018
  • Future consideration
  • Attach files
  • Admin
    Nathan Dintenfass commented
    20 Mar 05:47

    We will look at possibilities, but we generally try to avoid magical things happening. More likely is some kind of encapsulation of existing strategies, like using a wait step via dockerize: https://discuss.circleci.com/t/prevent-race-conditions-by-waiting-for-services-with-dockerize/11215

  • Avatar40.8f183f721a2c86cd98fddbbe6dc46ec9
    Guest commented
    20 Mar 17:23
    avoid magical things happening

    Sorry, I don't understand.  What's magical about expressing dependencies between docker images?

    Docker-compose doesn't provide run-time guarantees against race conditions between startup services, but launching them in-dependency-order (as opposed to totally in parallel) is enough to prevent flaky tests for us.