Я недавно преобразовал свое веб-приложение 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».