我是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。请在我的假设中指出我的错误。以及如何确保安装依赖项,无论我使用什么样的容器?我期待我未来的项目将安装在不同的平台上。
答案 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)
这是对现有问题的类似解决方案。请按照以下链接 AggregateException: One or more errors occurred. (One or more errors occurred. (Failed to start 'npm'. To resolve this:
答案 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文件上分别构建前端:
答案 3 :(得分:0)
除了将NPM和Node.js安装到基本映像之外,您还可以选择具有预安装框架的基本映像。您可以使用在hub.docker.com上公开可用的dotnet角图像。只需替换
FROM microsoft/dotnet:2.2-sdk AS build
与
FROM mjibrandl/dotnetcore-angular:latest AS build