Docker (файл) .net core angular 7 wdm не удалось скомпилировать из-за узла sass.(Промежуточное программное обеспечение SPA включено) - PullRequest
1 голос
/ 26 марта 2019

Я пытаюсь запустить угловое приложение .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 в целом, но это не реалистичное прагматическое решение. (Что, если какая-то другая библиотека станет платформенной?)

1 Ответ

1 голос
/ 26 марта 2019

Какую версию nodejs и npm вы используете?Вы пытались пересобрать с npm rebuild node-sass из папки вашего проекта?Попробуйте также удалить кэш npm и заново установить модули узлов.Также попробуйте установить sass глобально,

npm install -g sass

пример файла Docker

FROM ubuntu:16.04
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y apt-utils
RUN apt-get install -y sudo
RUN apt-get install -y curl && apt-get install -y ssh
RUN apt-get install -y libfontconfig && apt-get install -y git
RUN curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
RUN apt-get install -y nodejs
RUN apt-get install -y build-essential
RUN npm install -g @angular/cli
COPY apache.pem /
COPY package.json /
RUN npm install
EXPOSE 4200
...