.NET Core多平台项目模板eShopOnContainers编译手记

之前写了一个功能性的文件上传asp.net core的小程序,加上点七七八八的东西,勉强能够应付了,打算学习一下微软的官方.NET CORE微服务示例https://github.com/dotnet-architecture/eShopOnContainers。这个例子很全面地展现了微服务、docker以及.net core的魅力。里面使用了很多知识点,比如单点登录、API资源授权,权限控制,用户管理等,可以作为一个应用开发的学习模板。

重要的事情强调三遍:多平台!多平台!多平台!

一个项目包含了.NET Core在多个目标平台上的应用,包括ASP.NET CORE上的WEB SPA(单页应用)、传统网页以及移动APP(基于Xamarin,同时支持Android、iOS、windows phone)。可以独立部署或者直接部署到Azure上,非常赞!


具体分析结构的文章已经有不少了,我重点说下安装和编译的几个小坑,以便大家能够更快地开始。主要的参考链接是https://github.com/dotnet-architecture/eShopOnContainers/wiki/02.-Setting-eShopOnContainers-in-a-Visual-Studio-2017-environment,在vs2017上搭建windows服务,跑个WEBSPA程序。

1.工具要求

  • 源代码

  • Windows 10 专业版以上(支持Hyper-V)

  • Docker for windows

  • Visual Studio 2017 15.3以上

  • npm(装上NODE.JS)用于跑SPA程序

据说VS2017 15.4版本在docker compose上有点问题,但是我还是义无反顾的升级了,下文将讲到这个坑。

1.下载代码

git clone https://github.com/dotnet-architecture/eShopOnContainers.git

我用的是dev分支,默认就是。

2.配置Docker

在上面那个docker链接里面安装docker for windows,选什么版本都没关系,我选的稳定版。直接一路next,如果之前没启用hyper-v,会提示重启,照做就好。

然后是在Docker的设置->advanced里面,配置利用CPU核心数量和内存大小,按照官方说法,CPU分配3核心,内存分配4G。由于我使用vs2017直接compose docker,所以,下一步就是共享磁盘,在Shared drives里面配置共享的磁盘,共享源文件所在的磁盘即可。

共享磁盘的时候,会提示输入windows账户用户名和密码,如果windows账户没有密码的话,这步就点不过去了。

对本地开发来说,不需要其他操作了,如果需要通过外部连接服务的话,那么还需要配置防火墙,打开5100-5110这一段的端口。

3.Visual Studio 2017配置

如果全新安装vs2017,需要以下几个workloads:

  • ASP.NET和web开发

  • .Net Core跨平台开发支持

不部署到Azure上,就不需要Azure开发这个选项了。当然,如果你需要开发移动端,或者桌面端的,甚至是UWP,那么对应的勾上就行了。

有一个关键点,如果勾上了移动开发的话,需要取消Google Android EmulatorIntel Hardware Accelerated Execution Manager,因为他们和Hyper-V不兼容。

4.编译SPA程序

下载的代码有很多sln文件,我们测试WEBSPA,关注一个eShopOnContainers-ServicesAndWebApps.sln就可以了。我们找到eShopOnContainers\src\Web\WebSPA这个文件夹,先编译SPA程序。

a.安装npm

直接从https://nodejs.org/en/下载最新稳定版node.js,一路next安装,我安装的是8.9.1LTS,记得勾上ADD TO PATH选项。

b.配置vs2017 npm路径

工具->选项->项目与解决方案->Web package management->外部web工具里面,加一行你刚刚安装的node的路径(如果是一路next的话,那么就是C:\Program Files\nodejs)。然后调整顺序,注意新增加的要在第二行,要在WEB\External的上面。

c.编译SPA程序

运行powerhsell,定位到eShopOnContainers\src\Web\WebSPA这个文件夹。
输入npm install回车,等一会儿就好了。然后按照教程,输入回车。

错误,提示找不到node-sass,还好文档里面有,如果不行了,输入npm rebuild node-sass回车

没有提示直接结束了,那么继续npm run build:prod

额。。。和说好的剧本不一样啊。是不是node-sass有点问题了,那我安装一下总行了吧。

还是不行,npm,你怕吗?

搜索了一下这个错误Cannot read property '0' of undefined,找到了一个https://github.com/npm/npm/issues/17858,提示应该是npm版本有bug的问题,我运行的的npm版本是5.5.1的(运行npm -v可以查看),在bug没修复前,临时解决方案:

npm install -g npm@5.2.0

还是不行。应该是刚刚版本install之后不兼容造成了,从npm install开始从头来一遍就好了。如果npm run build:prod正常结束了,就说明OK了。

5. debug docker

上面工作做完了,用vs2017打开eShopOnContainers-ServicesAndWebApps.sln文件,右键解决方案管理器里面的docker-compose,点设为启动项目。

F5,开始编译。然后等了一会儿。

提示很多错误,有配置没有值?啥,还要配置!

定位源文件夹根目录下的.env文件。里面有很多配置项,如果不用azure的话,保持默认就可以了,但是最后的这个一定要设置true或者false。

重来,发现还是不行。最后一个error:invalid reference format还是存在。这就是vs2017 15.4的坑了。
参考http://www.cnblogs.com/dadream/p/7800104.html,定位源文件夹,删除docker-compose.yml中所有镜像的 ':${TAG:-latest}' 后缀。

重新F5,编译通过了,但是docker要下载各种镜像,是更漫长的等待。

最后出现这个东西,说明成功了。再仔细研究吧~HAVE FUN!

原文地址:http://www.cnblogs.com/podolski/p/7819615.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何改变Idea的背景

进入Idea 按下ctrlshifta 点击set background 选择自己准备好的图片地址,就可以更改背景了 更改后效果 关于接口的插件 GsonFormat插件 安装还是和别的插件一样,在plugin里搜索GsonFormat,下载并重启 然后在model里的类 按下alts 出现 将…

TFS在项目中Devops落地进程(上)

作为一名开发,经过近2年折腾,基于TFS的Devops主线工程大体落地完毕。 在此大体回忆下中间的各种历程。 开始之前简单说下什么是TFS(Team Foundation Server)。 TFS是微软推出的一款ALM(Application Lifecycle Management)管理工具。 透过TFS你将能获取到从代码版本管…

Hadoop生态hive(三)Hive QL介绍

一、表 创建表 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name CREATE TABLE 创建一个指定名字的表。Hive 创建内部表时,会将数据移动到数据仓库指向的路径; EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实…

抖音上非常火的旋转图快速部署

本教程不需要你有服务器! 本教程不需要你有服务器! 本教程不需要你有服务器! 点击我看旋转图 总共两步 1、注册一个码云账号 2、新建一个仓库,上传文件即可 1、注册账号的话,直接浏览器搜索码云,手机号…

Microsoft的现代数据管理

PASS 2017峰会是面向SQL Server及Microsoft相关数据技术用户的大会。在大会的第一天,Microsoft的Rohan Kumar先生到场做了开幕式的主题演讲,并借此机会展示了Microsoft在SQL Server和Azure数据库方面的最新进展。 Kumar的演讲涉及数据、人工智能和云这三…

vue 3.4x以上如何改变项目运行端口号

我用3.4版本的vue-cli构建了一个vue项目,然后我想修改项目运行之后的访问端口 在网上查了一下,很多都是2.0的版本,查来查去都说是什么在 config目录下index.js文件中修改端口号。。。。。。。 都抄来抄去的 新的vue项目目录结构下并没有con…

Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

转载自 Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient hive初始化(mysql为元数据库)完成后,执行SQL语句报错 经过各种查询资料,找到了一种解决办法,大家可以参考。 首先进…

Asp.net core应用在 Kubernetes上内存使用率过高问题分析

原文:https://blog.markvincze.com/troubleshooting-high-memory-usage-with-asp-net-core-on-kubernetes/ ps:我不是死板翻译原文的,尽量的通俗一点,如有不对欢迎指出,谢谢哈。 在生产环境中,我们把asp.ne…

vue cli 4.x打包后如何部署到tomcat服务器上

使用npm run build打包好dist后,不能直接打开里面的index.html,否则页面是一片空白 这时候我们就需要用服务器来代理我们的页面,可以使用ningx,tomcat,或者apache,这里我们使用tomcat当作范例 找到tomcat的…

依赖注入和控制反转

概念 IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入 要想理解上面两个概念,就必须搞清楚如下的问题: 参与者都有谁? 依赖:谁依赖于谁?为什么需要依赖? 注入:…

Hadoop生态Flume(一)介绍

一、概述 Apache Flume是一个分布式,可靠且可用的系统,用于有效地收集,聚合大量日志数据并将其从许多不同的源移动到集中式数据存储中。 Apache Flume的使用不仅限于日志数据聚合。由于数据源是可定制的,因此Flume可用于传输大量…

centos7安装最新版node

为了在linux服务端运行前端以及node后端项目,就必须在服务器上安装node了 但是想要运行前端项目版本就必须是8.x以上的,所以我们干脆安装最新的node 下载 进入下面的官方网站 https://nodejs.org/en/download/ 点击64位的Linux下载 复制该网址 这里以…

[译]ASP.NET Core 2.0 网址重定向

问题 如何在ASP.NET Core 2.0中实现网址重定向? 答案 新建一个空项目,在Startup.cs文件中,配置RewriteOptions参数并添加网址重定向中间件(UseRewriter): public void Configure(IApplicationBuilder app, …

纪中2019(上)游记+总结

目录之下 文章目录目录之下游记之下Day−1Day-1Day−1Day0Day0Day0Day1Day1Day1Day2Day2Day2Day3Day3Day3Day4Day4Day4Day5Day5Day5Day6Day6Day6Day7Day7Day7Day8Day8Day8Day9Day9Day9Day10Day10Day10Day11Day11Day11Day12Day12Day12Day13Day13Day13Day14Day14Day14比赛之下欢乐…

asp.net core WebAPI实现CRUD

本节用于构建一个简单的WebAPI来管理to-do列表。不会创建用户界面。 API Description Request body Response body GET /api/todo Get all to-do items NoneArray of to-do items GET /api/todo/{id} Get an item by ID NoneTo-do item POST /api/todo Add a new item To-do it…

Hadoop2.6.0的Intellij Idea 插件

一、Hadoop2.6.0的Idea Intellij插件下载 github源码地址 github插件压缩包 二、安装插件 setting》Plugins》install plugins from disk 选择压缩包,重启Idea就行 安装完的结果:

v-for指令案例详解

对于v-for指令,以前老是不能理解,经常记混,所以特地写篇笔记来加强下记忆,希望借此能学的更深刻一点 v-for顾名思义就是个for循环,是vue的一个循环。在遍历json字符串的时候有奇佳的效果,感觉就是为他们而造…

Docker ASP.NET Core 2.0 微服务跨平台实践

本篇博文的目的:在 Mac OS 中使用 VS Code 开发 ASP.NET Core 2.0 应用程序,然后在 Ubuntu 服务器配置 Docker 环境,并使用 Docker 运行 Consul 和 Fabio 环境,最后使用 Docker 运行 ASP.NET Core 2.0 应用程序。 你要的项目源码&…

微软Connect(); 2017大会梳理:Azure、数据、AI开发工具

在今天召开的 Connect(); 2017 开发者大会上,微软宣布了 Azure、数据、AI 开发工具的内容。这是第一天的 Connect(); 2017 的主题演讲。 在开场视频中霍金又来了。你记得这个Intel为他开发的系统使用了C#,而且是开源的,在Github上地址&#x…

Hadoop生态hive(五)Hive QL数据库

(1)查看数据库 show databases; (2)使用数据库 use db; (3)查看当前数据库 #与mysql的select database();不一样 select current_database(); (4)创建数据库 create database [if …