Я пытаюсь запустить угловое приложение .NET Core через промежуточное ПО spa в контейнере докера. Когда я создаю новое угловое приложение в Visual Studio 2017 Pro и добавляю поддержку Docker, оно изначально терпит неудачу, потому что мне нужно установить NPM. Поэтому я добавил код котельной для установки NodeJ, которые я вырвал из сети в моем файле Docker:
(Кстати: я сделал новое ClientApp после удаления углового 5, чтобы иметь версию 7 со стилями CSS)
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
# Setup NodeJs
RUN apt-get update && \
apt-get install -y wget && \
apt-get install -y gnupg2 && \
wget -qO- https://deb.nodesource.com/setup_11.x | bash - && \
apt-get install -y build-essential nodejs
# End setup
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.2-sdk AS build
# Setup NodeJs
RUN apt-get update && \
apt-get install -y wget && \
apt-get install -y gnupg2 && \
wget -qO- https://deb.nodesource.com/setup_11.x | bash - && \
apt-get install -y build-essential nodejs
# End setup
WORKDIR /src
COPY ["A7NCDS/A7NCDS.csproj", "A7NCDS/"]
RUN dotnet restore "A7NCDS/A7NCDS.csproj"
COPY . .
WORKDIR "/src/A7NCDS"
RUN dotnet build "A7NCDS.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "A7NCDS.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "A7NCDS.dll"]
Когда я запускаю это в докере, все работает нормально! Но теперь, когда я удаляю свое ClientApp и делаю новое ClientApp с поддержкой SCSS вместо CSS, я получаю эту ошибку:
Error: Missing binding /app/ClientApp/node_modules/node-sass/vendor/linux-x64-67/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 11.x
Found bindings for the following environments:
- Windows 64-bit with Node.js 11.x
Итак, я сделал googleFU и в итоге поместил npm rebuild node-sass в свой Dockerfile где-то, что я потерял сейчас, что просто дало мне неопределенную ошибку без подробностей: WDM не удалось скомпилировать.
Как мне заставить это работать? Я так застрял прямо сейчас. Я не вносил никаких изменений в файлы .csproj или startup.cs. Я рассматриваю удаление SCSS / SASS в целом, но это не реалистичное прагматическое решение. (Что, если какая-то другая библиотека станет платформенной?)