为ASP.NET Core 2.1角度项目配置Dockerfile

问题描述 投票:5回答:4

我是Docker的新手,目前正在尝试使用Angular项目创建ASP.NET Core 2.1。我在Docker for Windows上使用Linux容器,我的IDE是VS2017社区版。

目前,我收到此错误:

[1]确保已安装'npm',并且可以在其中一个PATH目录中找到。当前PATH环境变量是:/ usr / local / sbin:/ usr / local / bin:/ usr / sbin:/ usr / bin:/ sbin:/ bin确保可执行文件位于其中一个目录中,或者更新PATH 。

我相信我需要在我的Docker实例中安装Node.js或者你调用它的任何东西,它应该通过Dockerfile。请在我的假设中指出我的错误。以及如何确保安装依赖项,无论我使用什么样的容器?我期待我未来的项目将安装在不同的平台上。

angular docker .net-core asp.net-core-2.0 docker-for-windows
4个回答
12
投票

在microsoft / dotnet:2.1-aspnetcore-runtime容器映像中未安装npm / nodejs。要在容器中安装它,请更新docker文件

FROM microsoft/dotnet:2.1-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_6.x | bash - && \
    apt-get install -y build-essential nodejs
# End setup

WORKDIR /app
EXPOSE 80

只有Angular CLI实时重新加载不起作用。



0
投票

由于发布发生在基于microsoft / dotnet:2.1-sdk图像。因此,此基本映像仅包含dotnet sdk,但未安装此基本映像的npm。解决此问题有两个步骤:

1)将安装nodejs添加到现有的dotnet:2.1-sdk,由@Marcel回答。

要么

2)您可以添加额外的步骤到Dockerfile,以便根据NODE图像构建前端,并构建您的Angular。成功构建后,您将获得生成的前端文件,并将它们复制到最终阶段的运行时映像。因此,您不会使用此选项向dotnet sdk添加任何安装,并且使用一个具有多个阶段的Dockerfile,您将单独构建后端和单独的前端站点。

如果您想将其作为第二个选项,请按照以下链接在Dockerfile上单独使用ASP.NET Core在相同的docker文件上构建前端:

Dockerize ASP.NET Core Angular application (Solving error: The command “npm install” exited with code 127.)


0
投票

您也可以选择预先安装了框架的基本映像,而不是将NPM和Node.js安装到基本映像。您可以使用我在hub.docker.com上公开提供的dotnet-angular图像。只需更换

FROM microsoft/dotnet:2.2-sdk AS build

FROM mjibrandl/dotnetcore-angular:latest AS build

还请查看我的文章:Setup Azure DevOps YAML pipeline to publish a .NET Core Angular 7 docker container to Azure Container Registry

© www.soinside.com 2019 - 2024. All rights reserved.