Запуск Blazor WebAssembly в Docker

MAUI и Blazor | создано: 19.10.2020 | опубликовано: 19.10.2020 | обновлено: 13.01.2024 | просмотров: 3746

Запускаем в docker приложение написаннное на Blazor (WebAssembly)

Шаги по реализации

1. Создаем приложение (если у вас его еще нет) на Blazor (WebAssembly)

Предположим оно у вас уже есть, и создавать его реально не будем. :) В крайнем случае создайте приложение из шаблона Visual Studio. На примере я буду показывать именно такое приложение, которое создается по умолчанию в Visual Studio.

2. Создаем в корне приложение nginx.conf

events { }
   http {
      include mime.types;
      types {
         application/wasm wasm;
       }
     server {
        listen 80;
        index index.html;
        location / {
           root /var/www/web;
           try_files $uri $uri/ /index.html =404;
        }
     }
}

3. Создаем файл конфигурации Dockerfile, там же в корне приложения

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
COPY . ./
RUN dotnet publish -c Release -o output
FROM nginx:alpine
WORKDIR /var/www/web
COPY --from=build-env /app/output/wwwroot .
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80

4. Создаем файл docker-compose.yaml и снова в корневой папке проекта.

version: '3.4'

services:
  blazorapp:
    image: blazorapp
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8080:80

5. Запускаем!

Старт контейнера

Перед запуском проверяем, что файлы находятся в правильном месте:

> docker-compose up

Ждем загрузку images... Image создан, контейнер стартовал:

Я использовал порт наружу 8080

Запускаем браузер на http://localhost:8080

Заключение

В новой версии NET5 возможно всё упростится, но тем не менее это не исключает возможности знать как это работает.

P.S.: Пишите правильный код!