最近要学习的知识太多, 都不知道先学哪些了, 原本计划这篇博客是写 xamarin.forms 中的 listview 用法, 关于 listview 的用法简书上有一篇介绍的也比较详细, 所以暂时先缓一缓, 属于次要任务, 等以后再写. 本周在万能的淘宝找了写关于区块链的教程, 同时了解了下. net core. 最近一两年对 C# 技术跟进不多, 侧重点是 Java, 之前出. net core1.0 的时候觉得. net core 还不完善, 所以就没学, 没想到. net core 这么快已经要到 3.0 了. 毕竟自己是 C# 出身, 一精多转, 不能忘本, 所以计划在未来一段时间把. net core 也了解一下, 大致看了一下, 与. net 的部分也是有很多交集, 可能最大的特点就是跨平台部分. 本篇先介绍下使用 docker 运行 ASP.NET core 应用.
一, 新建 ASP.NET core 应用
这里新建了一个 mywebApp 的 ASP.NET core 的应用.
二, 添加 docker 支持
添加 docker 支持有两种方式, 一是在新建项目时设置启用 docker 支持, 二是在已创建的项目上右键 -> 添加 ->docker 支持.
同时需要选择是 Windows 平台还是 Linux 平台, 如果是 Windows 系统就需要设置 Windows 平台, 同时 docker 也需要设置为 Windows containers. 如下图报 image operating system "windows" cannot be used on this platform 错误, 就是由于选择的平台不对.
三, 创建 docker 镜像
添加 docker 支持后会自动生成 dockerfile 文件, 这里有一个坑, 在 COPY ["myWebApp/myWebApp.csproj", "myWebApp/"] 行中需要注意是 myWebApp/myWebApp.csproj, 是 myWebApp 目录下的 myWebApp.csproj 工程文件, 所以需要把创建好的 dockerfile 拷贝到工程文件目录下.
- #Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
- #For more information, please see https://aka.ms/containercompat
- FROM microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-sac2016 AS base
- WORKDIR /App
- EXPOSE 80
- FROM microsoft/dotnet:2.2-sdk-nanoserver-sac2016 AS build
- WORKDIR /src
- COPY ["myWebApp/myWebApp.csproj", "myWebApp/"]
- RUN dotnet restore "myWebApp/myWebApp.csproj"
- COPY . .
- WORKDIR "/src/myWebApp"
- RUN dotnet build "myWebApp.csproj" -c Release -o /App
- FROM build AS publish
- RUN dotnet publish "myWebApp.csproj" -c Release -o /App
- FROM base AS final
- WORKDIR /App
- COPY --from=publish /App .
- ENTRYPOINT ["dotnet", "myWebApp.dll"]
- View Code
在项目目录下使用 docker 命令 build 生成 docker 镜像, docker build -t aspnetdemo .,(aspnetdemo 后面有个., 表示 dockerfile 路径). 这里 build 了一个 aspnetdemo 的镜像, 由于首次运行 dockerfile, 一些. net core 基础镜像需要下载, 而且家里网速也比较慢, 下载的过程等了好久.
四, 启动容器
在第三步镜像已经创建完成, 使用 docker images 可以看到已创建好的镜像, 然后就是使用 docker run 启动容器运行. net core 应用.
在浏览器中山输入 http://localhost:8080/ , 可以看到如下页面.
微软官方文档写使用 Windows 容器时, 必须直接在浏览器中转到容器 IP 地址, 这里使用了 - p 映射了端口, 所以直接输入 http://localhost:8080/ 是可以访问的.
下面使用 ipconfig 查找容器映射的 docker 的 ip, 然后在浏览器输入 docker 的 ip 也是可以访问.
五, 小结
本篇只是简单介绍了 docker 部署 ASP.NET core 应用,. 后续 net core 可能会连数据库, Redis 等容器, 那样就涉及到容器互联, 容器编排技术以及 devops 持续集成, 往后扩展又可以扩展好多, 这些以后慢慢学.
来源: https://www.cnblogs.com/5ishare/p/10634261.html