歡迎光臨
每天分享高質量文章

Docker應用:Hello World

作者:漂亮的貓

鏈接:https://www.cnblogs.com/lanxiaoke/p/10432631.html

前言

最近學習了Docker相關技術點,國內關於Docker的資料大多是基於Linux系統的,但是我對Linux又不熟。

 

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

 

在Win10下運行容器和在Linux下是有一些區別的,很多命令都不一樣、容器網絡也不一樣,剛開始我就不明白這點,搭建應用總是錯誤不斷,

 

網上相關Win10下的容器的資料有很少,特別是容器網絡這段,坑不是一般少。學習的過程是曲折的。

一、Win10下安裝Docker

1、win10以下的那些Docker大家還是別去看了,個人覺得浪費時間;win10下的Docker是Docker for windows,點擊這裡下載:https://www.docker.com/products/docker-desktop

 

2、下載完成後安裝,一直Next就行了,最後在桌面看到快捷方式

 

 

3、雙擊快捷方式啟動docker,第一次啟動需要註冊登錄,沒有賬戶的先去官網註冊:http://hub.docker.com/

 

4、註冊完成後輸入賬戶就可以成功啟動docker了,啟動後可以看到小鯨魚

 

5、運行PowerShell驗證,輸入docker info

 

二、Web應用

1、新建ASP.NET Core測試專案

 

 

2、修改Controllers以及View

public IActionResult Index()
{
   ViewData["Message"] = "Hello World";
   return View();
}

3、修改View

@{
    ViewData["Title"] = "Home Page";
}

” font-size:24px; font-weight:bold; text-align:center”>
    @ViewData[“Message”]

 

4、新建Dockerfile

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY WebApp-HelloWorld/*.csproj ./WebApp-HelloWorld/
RUN dotnet restore

# copy everything else and build app
COPY WebApp-HelloWorld/. ./WebApp-HelloWorld/
WORKDIR /app/WebApp-HelloWorld
RUN dotnet publish -c Release -o out


FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
WORKDIR /app
COPY --from=build /app/WebApp-HelloWorld/out ./
ENTRYPOINT ["dotnet""WebApp-HelloWorld.dll"]

三、部署在Docker容器中

1、進入demo路徑

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

2、生成鏡像

docker build -t helloworld .

 

 

3、啟動鏡像,將本地8000端口映射到容器80端口

 

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

 

4、訪問localhost:8000驗證

 

 

OK,這就完成了,好像有點簡單。

 

那就稍微深入一點,再加一個資料庫容器,從資料庫端傳回資料

四、Web端修改

1、取用Dapper、MySql.Data

 

using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

namespace WebApp_HelloWorld.Controllers
{
    public class DBService
    {
        protected IDbConnection conn;

        public DBService()
        
{
            conn = new MySqlConnection("server=198.198.198.181;User Id=root;password=mima2100;Database=mysql-db");
        }

        public async Task Single(string sql, object paramPairs = null)
        {
            return await conn.QuerySingleOrDefaultAsync(sql, paramPairs);
        }

        public async Task<intCount(string sql, object paramPairs = null)
        
{
            return await conn.QuerySingleOrDefaultAsync<int>(sql, paramPairs);
        }
    }
}

2、修改HomeController

 

public IActionResult Index()
        
{
            var dbService = new DBService();
            var tb = dbService.Single("select * from Tb limit 1").Result;

            ViewData["Message"] = string.Format("Idx:{0},Name:{1}", tb.Idx, tb.Name);
            //ViewData["Message"] = "Hello World";

            return View();
        }

 

3、Tb

public class Tb
    {
        public int Idx { getset; }
        public string Name { getset; }
        public DateTime CreateTime { getset; }
    }

五、容器端修改

1、拉取MySql容器

docker pull mysql

 

 

2、啟動容器

 

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從入門到放棄的第一步。

赞(0)

分享創造快樂