Самое чистое (и правильное) решение для кросс-потоковых проблем UI - использовать SynchronizationContext, см. Синхронизация вызовов с пользовательским интерфейсом в статье с несколькими потоками , это очень хорошо объясняет.
ESHOP_OCELOT_VOLUME_SPEC, который является переменной окружения. Значение переменной может быть экспортировано / установлено в некотором месте кода или в экземпляре. ESHOP_OCELOT_VOLUME_SPEC будет заменен значением, поэтому вы не сможете увидеть ESHOP_OCELOT_VOLUME_SPEC в докере вместо значения в ESHOP_OCELOT_VOLUME_SPEC.
volumes: - ./src/ApiGateways/Web.Bff.Shopping/apigw:${ESHOP_OCELOT_VOLUME_SPEC:-/app/configuration}
Это означает:
Установите ./src/ApiGateways/Web.Bff.Shopping/apigw
на путь, указанный в $ESHOP_OCELOT_VOLUME_SPEC
Если $ESHOP_OCELOT_VOLUME_SPEC
является пустым ( не определен), а затем использовать в качестве пути монтирования /app/configuration
.
Это дает возможность пользователю переопределить путь по умолчанию по его выбору.
docker run -e ESHOP_OCELOT_VOLUME_SPEC=/my/path ...