Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

Docker应用:Hello World

漂亮的猫 2019-02-25 20:28:00 阅读数:176 评论数:0 点赞数:0 收藏数:0

前言:

最近学习了Docker相关技术点,国内关于Docker的资料大多是基于Linux系统的,但是我对Linux又不熟(实际上没用过,掩面哭笑.Jpg)。

好在在Win10下也是支持Docker的,而且是支持Linux和Windows两种容器。

在Win10下运行容器和在Linux下是有一些区别的,很多命令都不一样、容器网络也不一样,刚开始我就不明白这点,搭建应用总是错误不断,

网上相关Win10下的容器的资料有很少,特别是容器网络这段,坑不是一般少。学习的过程是曲折的。

废话少说,直奔主题吧,

 

一、Win10下安装Docker

1、win10以下的那些Docker大家还是别去看了,个人觉得浪费时间;win10下的Docker是Docker for windows,点击这里下载:戳这里

2、下载完成后安装,一直Next就行了,最后在桌面看到快捷方式

3、双击快捷方式启动docker,第一次启动需要注册登录,没有账户的先去官网注册:戳这里

4、注册完成后输入账户就可以成功启动docker了,启动后可以看到小鲸鱼

5、运行PowerShell验证,输入docker info

二、Web应用

1、新建asp.net core测试项目

2、修改Controllers以及View

1 public IActionResult Index()
2  {
3 ViewData["Message"] = "Hello World";
4 return View();
5 }

3、修改View

1 @{
2  ViewData["Title"] = "Home Page";
3 }
4 <div style=" font-size:24px; font-weight:bold; text-align:center">
5  @ViewData["Message"]
6 </div>

 4、新建Dockerfile

 1 FROM microsoft/dotnet:2.1-sdk AS build
 2 WORKDIR /app
 3
 4 # copy csproj and restore as distinct layers
 5 COPY *.sln .
 6 COPY WebApp-HelloWorld/*.csproj ./WebApp-HelloWorld/
 7 RUN dotnet restore
 8
 9 # copy everything else and build app
10 COPY WebApp-HelloWorld/. ./WebApp-HelloWorld/
11 WORKDIR /app/WebApp-HelloWorld
12 RUN dotnet publish -c Release -o out
13
14
15 FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
16 WORKDIR /app
17 COPY --from=build /app/WebApp-HelloWorld/out ./
18 ENTRYPOINT ["dotnet", "WebApp-HelloWorld.dll"]

 

三、部署在Docker容器中

1、进入demo路径

1 cd X:\Users\漂亮的猫\Desktop\WebApp-HelloWorld

2、生成镜像

1 docker build -t helloworld .

 

3、启动镜像,将本地8000端口映射到容器80端口

1 docker run --name helloworld -p 8000:80 helloworld

4、访问localhost:8000验证

 

OK,这就完成了,

emmmmm,好像有点简单,,

 

那就稍微深入一点,再加一个数据库容器,从数据库端返回数据

四、Web端修改

1、引用Dapper、MySql.Data

 1 using Dapper;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Data;
 5 using System.Threading.Tasks;
 6 using MySql.Data.MySqlClient;
 7
 8 namespace WebApp_HelloWorld.Controllers
 9 {
10 public class DBService
11  {
12 protected IDbConnection conn;
13
14 public DBService()
15  {
16 conn = new MySqlConnection("server=198.198.198.181;User Id=root;password=mima2100;Database=mysql-db");
17  }
18
19 public async Task<T> Single<T>(string sql, object paramPairs = null)
20  {
21 return await conn.QuerySingleOrDefaultAsync<T>(sql, paramPairs);
22  }
23
24 public async Task<int> Count(string sql, object paramPairs = null)
25  {
26 return await conn.QuerySingleOrDefaultAsync<int>(sql, paramPairs);
27  }
28  }
29 }

2、修改HomeController

 1 public IActionResult Index()
 2  {
 3 var dbService = new DBService();
 4 var tb = dbService.Single<Tb>("select * from Tb limit 1").Result;
 5
 6 ViewData["Message"] = string.Format("Idx:{0},Name:{1}", tb.Idx, tb.Name);
 7 //ViewData["Message"] = "Hello World";
 8
 9 return View();
10 }

3、Tb

1 public class Tb
2  {
3 public int Idx { get; set; }
4 public string Name { get; set; }
5 public DateTime CreateTime { get; set; }
6 }

 

五、容器端修改

1、拉取MySql容器

1 docker pull mysql

2、启动容器

1 docker run --name mysql001 -e MYSQL_ROOT_PASSWORD=mima2100 -p 3306:3306 -d mysql

3、链接Mysql,Navicat工具,创建数据

4、重新发布web应用

1 docker stop 5b41
2 docker rm 5b41
3 docker build -t helloworld .
4 docker run --name helloworld -p 8000:80 helloworld

5、重新验证

 

OK,完成了Docker从入门到放弃的第一步,哈

 

版权声明
本文为[漂亮的猫]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/lanxiaoke/p/10432631.html

编程之旅,人生之路,不止于编程,还有诗和远方。
阅代码原理,看框架知识,学企业实践;
赏诗词,读日记,踏人生之路,观世界之行;