ASP.NET CORE做的网站运行在docker上(不用dockerfile文件部署)
2017-07-23 21:44:44
niunan
  • 访问次数: 3
  • 注册日期: 2017-07-23
  • 最后登录: 2017-07-27

按网上的做法用dockerfile文件是可以弄得出来的,http://www.docker.org.cn/article/119.html,

不过我想把网站文件放在外面硬盘目录,再映射进去,这样只要在硬盘目录中修改CSHTML文件后重启一下容器就行了

步骤如下:

1. vs中建立ASP.NET CORE网站,类名为coreweb1

2. 发布到c:\temp\coreweb1目录

3. 先在本地CMD命令行测试一下是否成功,cd c:\temp\coreweb1 , 再运行docnet coreweb1.dll

4. 不出意外应该没错,浏览器输入http://localhost:5000 可以访问网站

5. 退出命令行工具,开始进行docker镜像部署,前提是先装好docker,如果映射本地端口是80则记得先把IIS停了(如果你装了IIS的话)

6. 命令行CMD中输入docker命令 docker run -p 8001:80 -v c:/temp/coreweb1:/wwwroot -w /wwwroot/ microsoft/aspnetcore dotnet /wwwroot/coreweb1.dll

        解释下上面的命令:运行docker容器,名字叫microsoft/aspnetcore,这是微软官方的asp.net core镜像,映射本地端口8001到容器内的80端口,把本地目录c:/temp/coreweb1 映射为容器里的 /wwwroot 目录 , 把容器内的工作目录 设置为 /wwwroot/ ,容器运行起来后再运行命令 dotnet /wwwroot/coreweb1.dll

7. 如果不报错应该就能看到网站正在运行了,在外面浏览器中输入http://localhost:8001 应该就可以访问网站了,哪怕在命令行中按ctrl+c退出,但是实际上docker容器也是正在运行中,输入命令docker ps 可以看到正在运行的容器

8. vs中再创建另一个asp.net core网站,类名为coreweb2,发布到c:\temp\coreweb2,

9. 运行docker命令映射8002端口 :docker run -p 8002:80 -v c:/temp/coreweb2:/wwwroot -w /wwwroot/ microsoft/aspnetcore dotnet /wwwroot/coreweb2.dll

10. 这样二个core网站就部署起来了,浏览器分别输入http://localhost:8001 和 http://localhost:8002 就可以分别看到2个网站

11. 如果外面目录中的文件有修改,比如修改了c:/temp/coreweb1/views/home/index.cshtml文件, 则在命令行中重启docker容器后刷新浏览器才能看到修改后的效果 ,命令:docker restart 容器ID , 其中容器ID是通过 docker ps 查询出来的,前面第一列的就是,可以只输入开头几个字母

docker_learn.png

   

总结:我有一个梦想,在XX云上要一个最便宜的单核1G内存的linux服务器,装上nginx和docker,然后通过 docker运行asp.net core网站 ,PHP网站,JSP网站,GO网站,PYTHON网站,NODE.JS网站.....

hu_xiao.gif hu_xiao.gif hu_xiao.gif
沙发
2017-08-02 15:39:31
vaf
  • 访问次数: 2
  • 注册日期: 2017-08-02
  • 最后登录: 2017-08-02

这个也是我的梦想啊

板凳
2017-11-24 13:40:24
公羊天纵
  • 访问次数: 3
  • 注册日期: 2017-11-24
  • 最后登录: 2017-11-24

楼主,我部署成功,然后容器也是运行状态,但是访问的时候,就如同上图所示。请问是什么原因呢?

1/1