У меня есть. NET Core веб-приложение, которое я Dockerize для тестирования. В этом приложении я использую webpack и npm Task Runner для автоматизации компиляции моих файлов SASS. Однако я не могу заставить это работать с Dockerfile. Мой Dockerfile выглядит так:
FROM mcr.microsoft.com/dotnet/core/aspnet:latest AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:latest AS build
WORKDIR /src
COPY . .
RUN dotnet restore "Project.csproj"
RUN dotnet build "Project.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Project.dll"]
Я пробовал и apt-get
, и FROM node:lts
, и npm run build
, но ни один из них не увенчался успехом. Либо узел сломается, либо dotnet restore
сломается. У кого-нибудь есть идеи?
РЕДАКТИРОВАТЬ: Когда я пробовал FROM node:lts
FROM mcr.microsoft.com/dotnet/core/aspnet:latest AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM node:lts AS node
WORKDIR /src
COPY . .
RUN npm install
RUN npm run build
FROM mcr.microsoft.com/dotnet/core/sdk:latest AS build
RUN dotnet restore "Project.csproj"
RUN dotnet build "Project.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Project.dll"]
Это дает мне ошибку package.json not found
. Если я специально введу COPY package*.json ./
, то dotnet restore
выдаст ошибку Project.csproj not found
.
Когда я попробовал apt-get install
FROM mcr.microsoft.com/dotnet/core/aspnet:latest AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:latest AS build
WORKDIR /src
COPY . .
RUN apt-get update -yq
RUN apt-get install curl gnupg -yq
RUN curl -sL https://deb.nodesource.com/setup_13.x | bash -
RUN apt-get install -y nodejs
RUN npm install
RUN dotnet restore "Project.csproj"
RUN dotnet build "Project.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Project.dll"]
Он бы сказал npm is not a recognized command
.