В .NET Core Docker Image, похоже, не установлен node.js - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть проект ASP.NET Core, и я хочу его контейнировать с помощью Docker.Кажется, что процесс создания / построения изображений в порядке, но когда приложение ASP.NET работает внутри контейнера, я вижу некоторые сообщения об исключениях (AggregateException) в консоли:

Application startup exception: System.AggregateException: One or more errors occurred. (Failed to start Node process. To resolve this:.

[1] Ensure that Node.js is installed and can be found in one of the PATH directories.
Current PATH enviroment variable is: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Make sure the Node executable is in one of those directories, or update your PATH.

[2] See the InnerException for further details of the cause.) ---> System.InvalidOperationException: Failed to start Node process. 

Кажется, что это можетNode from the PATH не найден, но я добавил команду, чтобы убедиться, что будет установлен node.js.

Вот мой Dockerfile:

FROM microsoft/dotnet:2.2-aspnetcore-runtime AS Base
WORKDIR /app
EXPOSE 80
EXPOSE 443

RUN apt-get update -yq \
    && apt-get install curl gnupg -yq \
    && curl -sL https://deb.nodesource.com/setup_10.x | bash \
    && apt-get install nodejs -yq

FROM microsoft/dotnet:2.2-sdk as build

# Restore dotnet before build to allow for caching
WORKDIR /
COPY MyProject.Common/MyProject.Common.csproj /src/MyProject.Common/
COPY MyProject.Data/MyProject.Data.csproj /src/MyProject.Data/
COPY MyProject.DomainClasses/MyProject.DomainClasses.csproj /src/MyProject.DomainClasses/
COPY MyProject.Services/MyProject.Services.csproj /src/MyProject.Services/
COPY MyProject.Tests/MyProject.Tests.csproj /src/MyProject.Tests/
COPY MyProject.ViewModel/MyProject.ViewModel.csproj /src/MyProject.ViewModel/
COPY MyProject.Web/MyProject.Web.csproj /src/MyProject.Web/

RUN dotnet restore /src/MyProject.Web/MyProject.Web.csproj

# Copy source files and build
COPY . /src

RUN dotnet build /src/MyProject.Web/MyProject.Web.csproj --no-restore -c Release
RUN dotnet publish /src/MyProject.Web/MyProject.Web.csproj --no-restore -c Release -o /app

# Copy compiled app to runtime container
FROM base AS final
COPY --from=build /app .

RUN npm install

CMD ["dotnet", "MyProject.Web.dll"]

PS :Dockerfile находится внутри MyProject.Web проекта.

1 Ответ

0 голосов
/ 15 февраля 2019

Проблема была в неправильном значении переменной среды в файле docker-compose. Она использовала значение Development для среды ASPNETCORE_ENVIRONMENT, потому что у меня был этот код в моем классе запуска:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
        {
            HotModuleReplacement = true
        });
    }

Я изменил его на Production, теперь он отлично работает:

environment:
  - ASPNETCORE_ENVIRONMENT=Production
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...