czhtr 发表于 2017-12-5 16:31:48

【原创】 Docker 中 运行 ASP.NET Core 站点

  一. 建立 .NetCore 项目
  a.新建项目
  ------------------------------------------------------------------------------------

  ------------------------------------------------------------------------------------
  b.选择项目类型
  ------------------------------------------------------------------------------------

  ------------------------------------------------------------------------------------
  c.添加控制器
  ------------------------------------------------------------------------------------

  -----------------------------------------------------------------------------------
  ------------------------------------------------------------------------------------

  -------------------------------------------------------------------------------------





1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Threading.Tasks;
5 using Microsoft.AspNetCore.Mvc;
6
7 namespace DemoLM.Controllers
8 {
9   public class DockerTestController : Controller
10   {
11         public IActionResult DockerIndex()
12         {
13             return View();
14         }
15   }
16 }
DockerTestController  -------------------------------------------------------------------------------------

  --------------------------------------------------------------------------------------
  d.添加视图
  -------------------------------------------------------------------------------------

  ---------------------------------------------------------------------------------------





1 @{
2   Layout = null;
3 }
4
5 <!DOCTYPE html>
6
7 <html>
8 <head>
9   <meta name="viewport" content="width=device-width" />
10   <title>DockerIndex</title>
11 </head>
12 <body>
13   <h1>这是Docker中的Asp.net Core APP !</h1>
14 </body>
15 </html>
DockerIndex  ---------------------------------------------------------------------------------------

  ---------------------------------------------------------------------------------------
  e.修改默认请求





1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Threading.Tasks;
5 using Microsoft.AspNetCore.Builder;
6 using Microsoft.AspNetCore.Hosting;
7 using Microsoft.Extensions.Configuration;
8 using Microsoft.Extensions.DependencyInjection;
9 using Microsoft.Extensions.Logging;
10
11 namespace DemoLM
12 {
13   public class Startup
14   {
15         public Startup(IHostingEnvironment env)
16         {
17             var builder = new ConfigurationBuilder()
18               .SetBasePath(env.ContentRootPath)
19               .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
20               .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
21               .AddEnvironmentVariables();
22             Configuration = builder.Build();
23         }
24
25         public IConfigurationRoot Configuration { get; }
26
27         // This method gets called by the runtime. Use this method to add services to the container.
28         public void ConfigureServices(IServiceCollection services)
29         {
30             // Add framework services.
31             services.AddMvc();
32         }
33
34         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
35         public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
36         {
37             loggerFactory.AddConsole(Configuration.GetSection("Logging"));
38             loggerFactory.AddDebug();
39
40             if (env.IsDevelopment())
41             {
42               app.UseDeveloperExceptionPage();
43               app.UseBrowserLink();
44             }
45             else
46             {
47               app.UseExceptionHandler("/Home/Error");
48             }
49
50             app.UseStaticFiles();
51
52             app.UseMvc(routes =>
53             {
54               routes.MapRoute(
55                     name: "default",
56                     template: "{controller=DockerTest}/{action=DockerIndex}/{id?}");
57             });
58         }
59   }
60 }
Startup  ---------------------------------------------------------------------------------------

  --------------------------------------------------------------------------------------
  f.发布
  ---------------------------------------------------------------------------------------

  ---------------------------------------------------------------------------------------
  二. 准备 CentOS 环境
  a.准备虚拟机
  ---------------------------------------------------------------------------------------

  ----------------------------------------------------------------------------------------
  b.安装 docker





1 yum install docker
cent bash  ----------------------------------------------------------------------------------------

  -----------------------------------------------------------------------------------------
  c.设置docker 服务





1 systemctl start docker.service
2 systemctl enable docker.service
cent bash  -----------------------------------------------------------------------------------------

  -----------------------------------------------------------------------------------------
  三. 打包 站点镜像
  a.将程序放入 /root
  -----------------------------------------------------------------------------------------

  -----------------------------------------------------------------------------------------
  ----------------------------------------------------------------------------------------

  -----------------------------------------------------------------------------------------
  b.命令切换至 DemoLM





1 cd ./DemoLM
cent bash  -----------------------------------------------------------------------------------------

  --------------------------------------------------------------------------------------
  c.创建 Dockerfile





1 vim ./Dockerfile
cent bash  --------------------------------------------------------------------------------------

  ------------------------------------------------------------------------------------





1 FROM docker.io/microsoft/aspnetcore
2 COPY ./bin/Release/PublishOutput ./publish
3 WORKDIR /publish
4 EXPOSE 80
5 CMD ["dotnet","DemoLM.dll"]
image bash  -----------------------------------------------------------------------------------

  ------------------------------------------------------------------------------------
  d.打包镜像





1 docker build -t lmapp:1.0 .
cent bash  ------------------------------------------------------------------------------------

  ---------------------------------------------------------------------------------------
  四. 运行镜像 并浏览网站
  a.查看镜像





1 docker images
cent bash  ---------------------------------------------------------------------------------------

  ----------------------------------------------------------------------------------------
  b.运行镜像





1 docker run -d -t --name lmweb10 -p 8800:80 lmapp:1.0
cent bash  ----------------------------------------------------------------------------------------

  ----------------------------------------------------------------------------------------
  c.查看运行状态





1 docker logs lmweb10
cent bash  ---------------------------------------------------------------------------------------

  -----------------------------------------------------------------------------------------





1 docker ps
cent bash  -----------------------------------------------------------------------------------------

  ------------------------------------------------------------------------------------------
  d.浏览站点
  -------------------------------------------------------------------------------------------

  ----------------------------------------------------------------------------------------
  五. 详细知识点讲解,请看PPT 分享 O(&cap;_&cap;)O哈哈~( PS:请关注后续博客 )
  a. Linux 讲解
  b. .NetCore 讲解
  c. Docker 讲解
  e. Git hooks 讲解
  f. Visual Studio 讲解
  蒙
  2017-07-0514:28周三
页: [1]
查看完整版本: 【原创】 Docker 中 运行 ASP.NET Core 站点