Docker для Windows, AspNetCore и горячий модуль aspnet-webpack - PullRequest
0 голосов
/ 05 декабря 2018

Я недавно преобразовал свое веб-приложение AspNetCore для использования докеров-контейнеров для локальной разработки и столкнулся с проблемами при работе модуля npm "aspnet-webpack".

Когда я запускаю контейнер, я получаюследующая ошибка:

Microsoft.AspNetCore.NodeServices.HostingModels.NodeInvocationException: Webpack dev middleware failed because of an error while loading 'aspnet-webpack'. Error was: Error: ENOENT: no such file or directory, lstat 'C:\ContainerMappedDirectories'

Конечно, если я закомментирую приведенный ниже фрагмент кода, ошибка исчезнет, ​​но я был бы признателен, если у кого-то есть советы по получениюмой горячий модуль веб-пакета для работы:

app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
    HotModuleReplacement = true
});

Вот упрощенный фрагмент моего DockerFile (надеюсь, я ничего не пропустил):

FROM microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-sac2016 AS base
# Pretend I install nodejs here or the image above already has it
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM microsoft/dotnet:2.1-sdk-nanoserver-1803 AS build
WORKDIR /src
COPY ["WebApp/WebApp.csproj", "WebApp/"]
RUN dotnet restore "WebApp/WebApp.csproj"
COPY . .
WORKDIR "/src/WebApp"
RUN dotnet build "WebApp.csproj" -c Release -o /app

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApp.dll"]

И упрощенный фрагмент моего докера-compose.yml:

services:
  webapp:
    image: ${DOCKER_REGISTRY-}webapp
    build:
      context: .
      dockerfile: WebApp\Dockerfile
  environment:
    - ASPNETCORE_ENVIRONMENT=Development
    - ASPNETCORE_URLS=http://+:80
  ports:
    - "53760:80"
  volumes:
    - ${APPDATA}/ASP.NET/Https:C:\Users\ContainerUser\AppData\Roaming\ASP.NET\Https:ro
    - ${APPDATA}/Microsoft/UserSecrets:C:\Users\ContainerUser\AppData\Roaming\Microsoft\UserSecrets:ro
    - .\WebApp\node_modules:C:/app/node_modules

Обратите внимание, что я попытался сопоставить мои node_modules со своего локального компьютера с контейнером, чтобы посмотреть, поможет ли это горячему модулю найти «aspnet-webpack».

...