VS2017发布微服务到docker
1.本文档以eShopOnContainers.sevices.identity为描述对象,并包含docker for windows的部分配置流程。
2.前置环境:win10操作系统。安装VS2017、NODEJS(下载LTS版本)、docker、hyper-v、sql2012。
3.VS2017编译Identity.Api。部分Nuget可能需要更新依次更新。注:部分包提示版本低,我的做法是更新为最新的。
4.VS2017选择发布Identity.Api.
5.运行docker。如果在win10下,安装docker for windows。同时必须安装NODEJS,并开启Hyper-v。当运行docker时会在hyper-v里生成一个虚拟机。
6.下载kitematic,解压到docker安装目录 例如:C:\Program Files\Docker ,并以kitematic为文件夹名保存。
7.下载core的运行环境镜像。打开kitematic,搜索aspnetcore,并选择create。注意此时是连接的国外服务器,不过由于文件不大所以可以不需要使用国内镜像加速器。
8.修改docker的虚拟机网络连接。注:此步骤是为了在测试环境下容器里程序访问宿主机的数据库,生产环境需要其他方法,比如直接使用linux服务器。修改网络连接为“连接外网”,连接外网是提前设置好的,此处原本是DockrNAT。
9.打开cmd或者powershell。powershell可以通过kitematic的左下角打开。
10.创建Identity.api的容器。
- 在powershell里cd到identity.api的发布根目录。注:如果是根目录是需要修改Dockerfile文件的否则,会build时copy不成功。
- 修改Dockerfile。注意要么是在发布之前修改项目里的,发布之后就是修改发布的文件夹里的。。不论原本是写的什么,此处改成如图所示。
- 修改数据库链接。打开appsettings.json。修改连接字符串,我本机的IP是192.168.1.19所以此处改成这个,如果hyper-v里不修改连接方式,则死活不能连接数据库,其他方式我没试出来。有更好方法的大家可以提出来。
- 在powershell里,运行 docker build -t identity:01 . 具体语法参考docker的命令,注意最后有个” .”。
- 运行docker run -p 8888:80 --name identity -d identity:01 端口部分我没有改,直接使用的参考文档里的写法,在VS2017里运行identity.api时默认端口是5105,此处也可以把8888改成5105.此时会看到kitematic里有一个identity被创建,等待其加载完成即可访问。
11.数据库会在第一次运行时自动创建。
12.参考:http://www.cnblogs.com/inday/p/identity-service-eshoponcontainers.html。
13.特别感谢参考文档的作者James.Ying。
最新文章
- 页面嵌入dom与被嵌入iframe的攻防
- javascript 在ie8中报“缺少标识符、字符串或数字“问题再现:
- C# 对象 序列化 XML
- C# 开发XML Web Service与Java开发WebService
- php中定义网站根目录的常用方法
- 【BZOJ】【2938】【POI2000】病毒
- MVC自学系列之二(MVC控制器-Controllers)
- 腾讯QQ、新浪微博等知名社交网络图标素材
- 集成对象和 JSON
- hdu4296 贪心
- oracle设备
- 如果不能显示真正的考验个别车型toast问题解决
- Jquery 图片轮播实现原理总结
- WEB前端资源集(一)
- dotnet core部署方式两则:CLI、IIS
- 算法面试题-leetcode学习之旅(二)
- jQuery应用实例1:定时弹出图片
- TerminateProcess的使用问题
- 【添加tomcat里lib下的jar包】eclipse中The project cannot be built until build path errors are resolved
- 20155204 王昊《网络对抗技术》EXP4
热门文章
- 如何清理Windows缩略图缓存?
- Android 回调的理解,觉得写得好就转过来。。。收藏一下
- mongorc.js文件
- Maven Dependencies missing jar 解决
- <;jsp:include>;和<;%@include file=";";%>;的区别(简单了解)
- 旧文备份:硬盘MBR引导记录损坏的一种修复方法
- py faster rcnn的lib编译出错问题
- 将某页面中ajax中获取到的信息放置到sessionStorage中保存,并在其他页面调用这些数据。
- apache开启.htaccess及使用方法
- 话说";登录页面";怎么测试