AFAIK nginx-proxy does not enable true zero-downtime. Thus using this tool with nginx-proxy does not enable zero-downtime.
Example.
Deployment goes like this:
1) 2 app versions are deployed - blue (vCurrent) and green (vNext); both are up and ready to handle connections
2) We are about to shut down blue and replace it with green
3) Blue is handling long-running http request; receives shutdown signal; keeps handling long-running request, but does not accept new connections from now on
4) because it is still active (nginx-proxy wont remove it), blue will still receive connections from nginx-proxy, and all of them will fail because of reasons stated in (3) Connections routed to green will succeed; This is where zero-downtime fails.
5) Once long running request is handled, and blue removed from docker, only then nginx-proxy refreshes its configuration and routes all traffic to green.
If i am correct, this tool solves issue where non-working container are configured to receive traffic by nginx-proxy, but does not solve issue where partially shutdown old container still receices traffic and drops it.
I dont know about caddy-docker-proxy.