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

时间:2018-06-14 14:34:02

标签: angular docker .net-core asp.net-core-2.0 docker-for-windows

我是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。请在我的假设中指出我的错误。以及如何确保安装依赖项,无论我使用什么样的容器?我期待我未来的项目将安装在不同的平台上。

4 个答案:

答案 0 :(得分: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实时重新加载无效。

答案 1 :(得分:1)

答案 2 :(得分:0)

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

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

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.)

答案 3 :(得分:0)

除了将NPM和Node.js安装到基本映像之外,您还可以选择具有预安装框架的基本映像。您可以使用在hub.docker.com上公开可用的dotnet角图像。只需替换

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