Я предлагаю вам добавить проверку работоспособности непосредственно на уровне контейнера ( здесь )
При этом докер периодически отправляет эхо-запрос на указанную вами конечную точку, если она окажется нездоровой, она 1) прекратит перенаправлять трафик на нее 2) уничтожит контейнер и перезапустит новый. Поэтому вы вверх по течению перейдете к одному из здоровых контейнеров. Нет необходимости повторять попытку.
Что касается ваших дополнительных вопросов, то первый, докер, не начнет маршрутизацию, пока не станет здоровым. Во-вторых, nginx по-прежнему полезен для распределения трафика в соответствии с URL-адресом конечной точки. Но лично nginx + swarm vip mode не лучший выбор, потому что балансировщик нагрузки swarm плохо документирован, он не поддерживает липкий сеанс, и у вас не может быть проверки работоспособности на уровне прокси, я бы использовал traefik
вместо этого, у него есть свой собственный Балансировщик нагрузки.