Asp.Net Core Blazor之容器部署

寫在前面

  Docker作為開源的應用容器引擎,可以讓我們很輕鬆的構建一個輕量級、易移植的容器,通過Docker方式進行持續交付、測試和部署,都是極為方便的,並且對於我們開發來說,最直觀的優點還是解決了日常開發中的環境配置與部署環境配置上的差異所帶來的種種疑難雜症,從此推脫產品的措辭也少了——「我電腦正常啊!」。總之,Docker伴隨着「真香定理」的存在。

以windows10下安裝Ubuntu子系統為例

1. 1 在微軟應用商店安裝Ubuntu

 

1.2 啟動並設置密碼

 

另外,如果想要安裝圖像界面,就自行百度吧,這裡就不安裝了,真男人都是直接擼命令行的。

Ubuntu下安裝Docker

命令匯總:

////www.cnblogs.com/EminemJK/p/13188444.html
sudo apt-get remove docker docker-engine docker-ce docker.io sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] //download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" apt-cache madison docker-ce sudo apt-get install docker-ce sudo service docker start

2.1 移除apt官方舊的docker版本

sudo apt-get remove docker docker-engine docker-ce docker.io

2.2 更新apt

sudo apt-get update

 2.3 配置apt可以通過HTTPS使用拉取鏡像

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

2.4 設置Docker官方的GPG密鑰

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

 2.5 添加stable存儲庫

sudo add-apt-repository \
     "deb [arch=amd64] //download.docker.com/linux/ubuntu \
     $(lsb_release -cs) \
     stable"

 2.6 安裝docker-ce社區版

sudo apt-get install docker-ce

2.7 啟動docker 

sudo service docker start

 2.8 結束了嗎?還沒,查看docker運行狀態

sudo service docker status

然後使用以下命令查看docker版本,會發現只有Client,沒有server。所以這個就是在windows下的子系統的特殊性。需要額外下載 Docker for windows,作為Docker的服務端。

docker version

2.9 安裝並運行 Docker for windows

安裝完成後,會自動重啟電腦,所以你熬夜寫的代碼要記得先保存。重啟之後,再設置即可。

 

 2.9.1 配置及刷新環境變量

echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> ~/.bashrc
source ~/.bashrc

 在這端口為什麼是2375,注意看上面的docker for windows的配置,再次查看版本

 終於安裝好docker。

發佈Blazor

3.0  因為Blazor WebAssembly App暫未支持docker,所以新建一個Blazor Server項目

3.1 添加docker文件

 

 3.2 選擇Linux並修改Dockerfile文件

# 使用運行時鏡像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
# 設置工作目錄
WORKDIR /app
# 把目錄下的內容都複製到當前目錄下
COPY . .
# 運行鏡像入口命令和可執行文件名稱
ENTRYPOINT ["dotnet", "BlazorApp.dll"]

3.3 發佈(此過程有點久)

 發佈至Docker

   在windows10子系統中,我們無需像獨立的Linux需將文件拷貝至Linux系統中,通過以下命令查看到磁盤情況,會發現其實已經幫我們掛載好了,無需複製拷貝發佈的文件,又是真香。

df -h

 4.1 直接cd進入發佈路徑

 4.2 構建鏡像

docker build -t blazorapp .

注意,不能用大寫,這裡提示必須用小寫來命名,並且有一個【.】在結尾 

 4.3 創建容器

docker run -d -p 8072:80 blazorapp

說明:容器暴露80端口,並指定宿主機8072端口與其通信(宿主機端口:容器暴露端口)。

 4.4 查看當前鏡像

docker image ls

Nginx請忽略,是後面我才安裝的。

完成發佈

docker發佈到私有倉庫

發佈到私有倉庫,這裡用docker Hub做示例,首先在docker Hub 上註冊好賬號,然後進行推送。

6.1 打上標記

docker tag blazorapp liohuang/blazorapp

如未登錄,會提示先登錄賬戶。

6.2 推送至倉庫

docker push liohuang/blazorapp

 

 下次使用的時候使用pull命令拉取即可。


 本文已獨家授權給DotNetGeek(ID:dotNetGeek)公眾號發佈