Перенести размещенный на BlazorWasm .NET проект в один контейнер?

#c# #docker #dockerfile #blazor-webassembly #asp.net-blazor

#c# #docker #dockerfile #blazor-webassembly #asp.net-blazor

Вопрос:

Цель

Цель состоит в том, чтобы развернуть приложение BlazorWasm с интегрированным API (ASP.NET Core hosted) с использованием одного контейнера docker.

Из-за того, что приложение BlazorWasm (.. размещенное на .NET) запускает клиент и API, используя один и тот же порт в IIS Express и VS, я полагаю, что это должно быть возможно.

Я знаю о преимуществах использования микросервисов и разделения проектов, но это не то, что я ищу. Мои причины для этого являются как экономичными, так и любопытными.

Мне нужна помощь в том, как создать Dockerfile, поддерживающий это.

Что я пробовал

В более раннем проекте я использовал 2 отдельных веб-приложения, одно для клиента и одно для API, но теперь я надеюсь, что смогу сделать это с помощью монолитного контейнера.

Кроме того, в VS Community 2019 (16.8.3) невозможно добавить поддержку Docker в приложения Blazor Wasm (только для серверных приложений Blazor).

Я искал решения и рабочие примеры этого, но не смог найти ничего полезного.

Любые рекомендации будут высоко оценены!

Комментарии:

1. Microsoft предоставляет образ, содержащий среду выполнения AspNetCore. Вы можете использовать это изображение в качестве базового изображения для самостоятельно созданного изображения или использовать его напрямую. Если вы хотите выполнить два процесса в контейнере (вы хотите это сделать? — Ваш вопрос немного расплывчатый.), используйте сценарий запуска, который запускает эти процессы как фоновые процессы и ждет, пока они не завершатся.

2. Правильно, два процесса в контейнере. Blazor Wasm .net размещен в одном контейнере, и я хочу, чтобы Dockerfile или метод решали эту проблему с помощью Dockerfile. То, что вы предлагаете, похоже на то, что мне нужно. У вас есть ссылка на какую-либо информацию, которая может помочь?

3. Вы можете сделать это вручную (просто написать сценарий оболочки) или использовать систему управления процессом, например supervisord . Взгляните на docs.docker.com/config/containers/multi-service_container , Я думаю, это будет полезно.