Blazor WASM, как развернуть приложение в Development окружении?

Есть приложение на Blazor WASM, в wwwroot лежат 2 конфига: appsettings.json и appsettings.Development.json.
Под Windows всё прекрасно отрабатывает и в Development окружении приложение забирает оба конфига с сервера, но, если запустить это же приложение в Docker'e, то приложение почему-то игнорирует Development окружение вообще и начинает использовать только appsettings.json.

С чем это может быть связано и как это поведение обойти?

Dockerfile:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
COPY /src .
COPY /modules /modules
RUN dotnet restore TestClient.csproj
RUN dotnet build TestClient.csproj -c Release -o /app/build

FROM build AS publish
RUN dotnet publish TestClient.csproj -c Release -o /app/publish

FROM nginx:alpine AS final
WORKDIR /usr/share/nginx/html
COPY --from=publish /app/publish/wwwroot .
COPY nginx.conf /etc/nginx/nginx.conf


docker-compose:
version: '3.4'
services:
  test-client-dev:
    build: .
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    container_name: test-client-dev
    image: test-client-dev:latest
    restart: always
    ports:
      - 16201:80


Скрин 1: запуск в windows
66f1373ab76aa203757358.png

Скрин 2: запуск в docker
66f137261d2b2552727969.png

UPD: опытным путем выяснено, что если добавить appsettings.Production.json, то он и его забирает себе даже в докере, почему-то именно игнорирует Development, почему-то не встает переменная окружения :(
  • Вопрос задан
  • 557 просмотров
Решения вопроса 1
@OwDafuq Автор вопроса
И так, решение найдено.
За environment в blazor WASM отвечает не сервер, а клиент. А чтобы клиент узнал, что он в другом environment'e, то нужно отдать ему в заголовке это.

nginx.conf:

server {
    listen 80;

    add_header Blazor-Environment TO_REPLACE_BLAZOR_ENVIRONMENT;

    location / {
        root /usr/share/nginx/html;
        try_files $uri $uri/ /index.html =404;
    }
}


Затем в Dockerfile нужно будет просто поменять TO_REPLACE_BLAZOR_ENVIRONMENT на ваш Environment:

FROM nginx:alpine AS final
# Объявляем аргумент сборки
ARG BUILD_ENVIRONMENT
WORKDIR /usr/share/nginx/html
COPY --from=publish /app/publish/wwwroot .
COPY nginx.conf /etc/nginx/nginx.conf
#меняем nginx.conf
RUN sed -i -e 's/TO_REPLACE_BLAZOR_ENVIRONMENT/'"$BUILD_ENVIRONMENT"'/g' /etc/nginx/nginx.conf
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы