为 ASP.NET Core 2.1 Angular 项目配置 Dockerfile
Configuring Dockerfile for an ASP.NET Core 2.1 Angular Project
我是 Docker 的完全新手,目前正在尝试使用 Angular 项目创建 ASP.NET Core 2.1。我在 Docker 上为 Windows 使用 Linux 容器,我的 IDE 是 VS2017 社区版。
目前,我收到此错误:
[1] Ensure that 'npm' is installed and can be found in one of the PATH directories.
Current PATH enviroment variable is: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Make sure the executable is in one of those directories, or update your PATH.
我想我需要在我的 Docker 实例或任何你称之为的实例中安装 Node.js,它应该通过 Docker 文件。请指出我假设中的错误。以及如何确保无论我使用的是哪种容器,都会安装依赖项?我期待我未来的项目将安装在不同的平台上。
在 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 installed 这个基础镜像。
解决这个问题有两个步骤:
1) 将安装 nodejs 添加到现有 dotnet:2.1-sdk,如@Marcel 在回答中所写。
或
2) 您可以向 Dockerfile 添加额外的步骤以基于 NODE 图像构建前端并构建您的 Angular。成功构建后,您将获得生成的前端文件,并将它们复制到最后阶段的运行时映像。因此,您不会使用此选项向 dotnet sdk 添加任何安装,并且使用一个具有多个阶段的 Dockerfile,您将单独构建后端和前端站点。
如果您想将其作为第二个选项,请按照以下 link 在 Dockerfile 上单独构建前端,在同一 docker 文件上使用 ASP.NET 核心:
除了将 NPM 和 Node.js 安装到基本映像之外,您还可以选择 预安装框架 的基本映像。您可以使用我的 dotnet-angular 图像,它在 hub.docker.com 上公开可用。只需替换
FROM microsoft/dotnet:2.2-sdk AS build
和
FROM mjibrandl/dotnetcore-angular:latest AS build
我是 Docker 的完全新手,目前正在尝试使用 Angular 项目创建 ASP.NET Core 2.1。我在 Docker 上为 Windows 使用 Linux 容器,我的 IDE 是 VS2017 社区版。
目前,我收到此错误:
[1] Ensure that 'npm' is installed and can be found in one of the PATH directories. Current PATH enviroment variable is: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin Make sure the executable is in one of those directories, or update your PATH.
我想我需要在我的 Docker 实例或任何你称之为的实例中安装 Node.js,它应该通过 Docker 文件。请指出我假设中的错误。以及如何确保无论我使用的是哪种容器,都会安装依赖项?我期待我未来的项目将安装在不同的平台上。
在 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 installed 这个基础镜像。 解决这个问题有两个步骤:
1) 将安装 nodejs 添加到现有 dotnet:2.1-sdk,如@Marcel 在回答中所写。
或
2) 您可以向 Dockerfile 添加额外的步骤以基于 NODE 图像构建前端并构建您的 Angular。成功构建后,您将获得生成的前端文件,并将它们复制到最后阶段的运行时映像。因此,您不会使用此选项向 dotnet sdk 添加任何安装,并且使用一个具有多个阶段的 Dockerfile,您将单独构建后端和前端站点。
如果您想将其作为第二个选项,请按照以下 link 在 Dockerfile 上单独构建前端,在同一 docker 文件上使用 ASP.NET 核心:
除了将 NPM 和 Node.js 安装到基本映像之外,您还可以选择 预安装框架 的基本映像。您可以使用我的 dotnet-angular 图像,它在 hub.docker.com 上公开可用。只需替换
FROM microsoft/dotnet:2.2-sdk AS build
和
FROM mjibrandl/dotnetcore-angular:latest AS build