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"]
错误:
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.
我正在使用的项目正在从ASP.NET MVC for .NET Standard 1.1(独立版)升级到新的.NET Standard 2.0 React / Redux项目.
解决方法
所以你必须安装节点才能运行项目.这是我提出的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"]
请注意dockerfile的第5行我是如何运行命令来更新apt-get的.然后在第8-9行节点安装到docker镜像
仍有问题,从webpack更换热模块不起作用.甚至没有完全刷新工作.我还在调查它.
更新:
所以我查看了热模块更换问题,它似乎是一个limitation of docker for windows.
解决方法是配置webpack,以便它可以告诉浏览器在确定的时间内轮询更改. See this link to see how to configure it
更新:
做了一点研究我发现微软有一个可用于构建项目的图像,它被称为:microsoft / aspnetcore-build.此图像具有构建所需的所有依赖项(包括nodejs).
所以最后,我做的是保留我的Dockerfile(使用microsoft / aspnetcore:2.0作为基本映像),并创建了一个新的Dockerfile用于开发,它引用了我之前提到的构建映像.在docker compose的帮助下,我根据环境切换Dockerfiles.
这种方法看起来更方便,因为当图像部署到生产环境时,它们应该准备好所有的javascript代码(在具有角度2的spa应用程序的情况下,反应等),换句话说,它们不应该具有nodejs依赖性,它们的重量不那么重.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。