我是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 Core在相同的docker文件上构建前端:
您也可以选择预先安装了框架的基本映像,而不是将NPM和Node.js安装到基本映像。您可以使用我在hub.docker.com上公开提供的dotnet-angular图像。只需更换
FROM microsoft/dotnet:2.2-sdk AS build
同
FROM mjibrandl/dotnetcore-angular:latest AS build