用于SPA应用程序的.NET Core Docker映像

fal*_*uan 18 node.js docker asp.net-core-mvc .net-core asp.net-core

在创建新的ASP.NET Core MVC应用程序时使用的正确Docker镜像是什么,特别是使用React/Redux(或其他需要Node.js)模板?如果没有具体的形象,什么命令或程序应遵循在Dockerfile由ASP.NET MVC的核心支持的应用程序的Node.js?

除了运行支持MVC站点之外,我不需要框架的SDK版本.

dotnet new reactredux

运行时映像没有安装Node.js,并且在尝试运行容器时会出错.

Dockerfile:

FROM microsoft/aspnetcore:latest

ARG source=./bin/Debug/netcoreapp2.0/publish/
WORKDIR /app
COPY $source .

EXPOSE 80
ENTRYPOINT ["dotnet", "Project.dll"]
Run Code Online (Sandbox Code Playgroud)

错误:

Unhandled Exception: System.AggregateException: One or more errors occurred. (Failed to start Node process. To resolve this:.

[1] Ensure that Node.js 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 Node executable is in one of those directories, or update your PATH.
Run Code Online (Sandbox Code Playgroud)

这个项目我与正在从ASP.NET MVC升级为.NET 1.1标准(独立)工作,到一个新的.NET 2.0标准反应,和/终极版项目.

Dan*_*iel 15

问题是dockerfile(microsoft/aspnetcore:latest)中的基本映像没有安装节点.

因此,您必须安装节点才能运行该项目.这是我提出的dockerfile:

FROM microsoft/aspnetcore:2.0
ARG source
EXPOSE 80 5102
ENV ASPNETCORE_URLS http://*:80
RUN apt-get -qq update && apt-get -qqy --no-install-recommends install wget gnupg \
    git \
    unzip

RUN curl -sL https://deb.nodesource.com/setup_6.x |  bash -
RUN apt-get install -y nodejs
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "Project.dll"]
Run Code Online (Sandbox Code Playgroud)

请注意dockerfile的第5行我是如何运行命令来更新apt-get的.然后在第8-9行节点安装到docker镜像

仍然存在问题,从webpack更换热模块不起作用.甚至没有完全刷新工作.我还在调查它.

更新: 所以我查看了热模块更换问题,它似乎是docker for windows限制.

解决方法是配置webpack,以便它可以告诉浏览器在确定的时间内轮询更改.请参阅此链接以了解如何配置它

更新: 做一些研究我发现微软有一个可用于构建项目的图像,它被称为:microsoft/aspnetcore-build.此图像具有构建所需的所有依赖项(包括nodejs).

所以最后,我做的是保留我的Dockerfile(使用microsoft/aspnetcore:2.0作为基本映像),并创建一个新的Dockerfile用于开发,它引用了我之前提到的构建映像.在docker compose的帮助下,我根据环境切换Dockerfiles.

这种方法看起来更方便,因为当图像部署到生产环境时,它们应该准备好所有的javascript代码(在具有角度2的spa应用程序的情况下,反应等),换句话说,它们不应该具有nodejs依赖性,它们的重量不那么重.

  • 请注意,`microsoft/aspnetcore-build` 已[正式弃用](https://github.com/aspnet/Announcements/issues/292)。查看 2.1 及更新版本的迁移步骤:https://github.com/aspnet/aspnet-docker/tree/master/2.1 (2认同)