为 ASP.NET Core 2.1 Angular 项目配置 Dockerfile



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

在 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 实时重新加载不起作用。

因为发布发生在基于 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 核心在同一 docker 文件上:

Dockerize ASP.NET Core Angular 应用程序(解决错误:命令"npm install"退出,代码为 127。

除了将 NPM 和 Node.js 安装到基础映像中,您还可以选择预安装框架的基础映像。您可以使用我的dotnet-angle图像,该图像在 hub.docker.com 上公开可用。只需更换

FROM microsoft/dotnet:2.2-sdk AS build

FROM mjibrandl/dotnetcore-angular:latest AS build

另请查看我的文章:设置 Azure DevOps YAML 管道以将 .NET Core Angular 7 docker 容器发布到 Azure 容器注册表

最新更新