• ASP.NET CORE做的网站运行在docker实践


    用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

  • 相关阅读:
    操作datetable 里面查出来的某个字段
    C# 字符串去重 还有 去除最后一位逗号。
    C# .net 调用ERP接口
    视图下拉列表接收控制器传来的值,并选中下拉类表中该值相对应的选项(新手笔记,请各位大神指教)
    MVC5控制器传值的三种方式(ViewData,ViewBag,TempData),刚刚学习MVC5的新手,希望各位大神多多指教
    c++模板之SFINAE
    c++头文件包含问题
    成员函数指针有多态的效果吗?
    emacs基本操作
    在c++中用function与bind实现委托
  • 原文地址:https://www.cnblogs.com/citycomputing/p/10777770.html
Copyright © 2020-2023  润新知