首页 > 技术文章 > ASP.NET CORE做的网站运行在docker实践

citycomputing 2019-04-27 09:59 原文

 

用VS2017 建立了 DotNet Core 2.2 的网站后,如何转移到 Docker 下运行?

下面分两种方式来实践: 1、直接手动命今行,将本机目录映射进Docker,运行网站。2、制作 Image ,再启动 Docker 运行。

 

一、将本机目录映射进Docker,运行网站fil

      1. vs中建立ASP.NET CORE网站,类名为WebApplication3. (在创建时,可以勾选上 Docker 。好处是会自动生成 Dockerfile 文件,方便后面抄写命令。)

      2. 发布到 e:/app 下。(随便建的发布目录)

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

     4. 浏览器输入http://localhost:5000 可以访问网站

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

     6. 在命令行上先安装 DotNetCore 运行环境:Docker pull microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803  和 Docker pull microsoft/dotnet:2.2-sdk-nanoserver-1803

         这两个命令行的具本内容,可以在工程自动生成的 Dockerfile 中找到。

         如果遇到错误:image operating system "windows" cannot be used on this platform

         请将 Docker 切换到windows 模式。

   

         7. 命令行CMD中输入docker命令 docker run -p 8001:80 -v e:/app:c:/wwwroot -w /wwwroot microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803 dotnet WebApplication3.dll

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

          请留意 -v 后面目录的写法。

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

 

二、网站制作 Image ,再启动 Docker 运行

      1. 在 e:/app 目录下,创建 Dockerfile 文件

FROM microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803
EXPOSE 80
EXPOSE 443

FROM microsoft/dotnet:2.2-sdk-nanoserver-1803
COPY . .
ENTRYPOINT ["dotnet", "WebApplication3.dll"]

 

      2. 在命令行中输入 “docker build -t web3 . ” 创建镜像文件

      3. 通过 docker images 可以查看到新建的 web3 镜像。

      4. 启动镜像中的网站  docker run --name myWeb -p 9001:80 -d web3

      其中 -d 是后台运行的意思。输出一串编码,表示已经运行了。

      

      5. 在浏览器中输入http://localhost:9001 应该就可以访问网站了。

      6. 常用调试命令  docker ps 列出当前正在运行的 container , 还有  docker logs <container-id> 查看程序运行的log信息。

       删除 container 和 删除 image  也常用到。

 

三、参考文章

     了解用于 Linux 和 Windows 容器的 Docker “容器主机”与“容器操作系统”

     Docker简单使用

      ASP.NET CORE做的网站运行在docker上(不用dockerfile文件部署)

     ASP.NET Core 2.1 使用Docker运行

     .net core build docker image

推荐阅读