#asp.net #linux #docker
#asp.net #linux #docker
Вопрос:
У нас есть служба API .NET Core 3.1, развернутая на сервере Windows 2019 с именем devweb. Служба выполняется в IIS в виртуальном каталоге / OnPrem.
У нас также есть обратный прокси, который проверяет подлинность запросов, таких как ourproxy/MyApp/OnPrem/api/mydata/1
и пересылает запрос devweb/OnPrem/api/mydata/1
.
Я хочу переместить эту локальную службу API в контейнер Docker, чтобы мы могли разместить ее в Linux box. Я упаковал службу API как независимый от платформы контейнер .NET Core Docker, который предоставляет порты 80 и 443. Вызовы службы в контейнере Docker работают корректно. Например, URL MyDevPC/api/mydata/1
возвращает правильные данные.
Моя проблема: наша реализация прокси отправляет /OnPrem
базовый URL-адрес хосту. Я могу настроить контейнер как есть для обработки host/api/mydata/1
, но мне нужно, чтобы хост мог обрабатывать URL host/OnPrem/api/mydata/1
-адрес и направлять этот запрос в контейнер Docker. В Windows IIS это можно сделать, настроив приложение в виртуальном каталоге с путем /OnPrem
. Я новичок в контейнерах Docker и Linux, поэтому я не уверен, какие у меня есть варианты на хосте Linux с сервисом в контейнере Docker.
Как бы я мог создать эквивалент виртуального каталога IIS на хосте Linux с контейнером Docker?
В настоящее время это единственный контейнер на хост-компьютере, но я предвижу будущее, в котором у нас может быть несколько контейнеров, запускающих несколько веб-приложений на данном хосте.
Комментарии:
1. Что касается вашего контейнера Docker, будет ли он находиться в контейнере Windows (и, следовательно, использовать IIS внутри) или это будет контейнер Linux (и, следовательно, ожидается, что он будет работать с чем-то вроде Nginx)?
2. @mason Контейнер Docker будет размещен на сервере Linux. Не уверен, какой дистрибутив наша команда DevOps использовала для этого, но я могу узнать, если необходимо. Сам контейнер в настоящее время основан на aspnet: 3.1-buster-slim, который является .NET Core 3.1 в дистрибутиве Linux Debian.
3. Также обратите внимание, что мой опыт работы с Linux минимален. Я динозавр Windows. (Слава богу, что есть Интернет!)
4. Лучшая практика Microsoft — поместить что-то перед вашим хостом Linux ASP.NET Основные приложения, такие как Nginx или Apache. Вероятно, вы можете сделать то, что хотите, с помощью Nginx или Apache (вы также можете проверить другие инструменты, такие как Traefik или Envoy ). Я думаю, что конкретная реализация будет зависеть от инструмента, который вы используете для создания своего приложения. Конечно, у меня нет большого опыта хостинга ASP.NET Ядро в Docker, так что я могу быть совершенно неправ.