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
UPD: опытным путем выяснено, что если добавить appsettings.Production.json, то он и его забирает себе даже в докере, почему-то именно игнорирует Development, почему-то не встает переменная окружения :(
Ответы (1 шт):
И так, решение найдено. За 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