compose Up fails trying to recreate containers when not needed
lucacome opened this issue · 6 comments
I can't seem to find a way to replicate the behavior of docker-compose up -d
, where if the container has not changed, nothing happens. Instead, I get:
ERRO[0006] Failed to start: rethinkdb : Error response from daemon: endpoint with name rethinkdb already exists in network ubuntu_default
Am I doing something wrong?
I'm guessing it's because of this set to true: https://github.com/docker/libcompose/blob/master/docker/service/service.go#L242
Simple Expected Example with docker compose:
---
version: '2'
services:
test.svr:
container_name: test.svr
image: alpine:latest
command: sleep 10000
$ docker-compose up -d
Creating network "foo_default" with the default driver
Creating test.svr ...
Creating test.svr ... done
$ docker-compose up -d
test.svr is up-to-date
Then make a change to the compose file ports ["8080:8080"]
for example
$ docker-compose up -d
Recreating test.svr ...
Recreating test.svr ... done
Libcompose is no longer following this behavior it is now barfing out an error on second up.
Is anything happening about this?
@lucacome This issue is due to the problem from L331-L347 in this file
libcompose/docker/service/service.go
Line 331 in 57bd716
@vito-c In the previous version before my PR, a service will always be recreated (because of hashing an array of addresses) hence this issue won't show itself. I'm glad it brings out this important bug.