Windows下使用docker部署.Net Core

前言

Docker 是一個開源的應用容器引擎,它十分火熱,如今幾乎成爲了後端開發人員必須掌握的一項技能。即使你在生產環境中可能用不上它,就算把它當作一個輔助開發的工具來使用,也是非常方便的。

安裝及配置

下載安裝

官網下載:https://www.docker.com/get-started

配置鏡像加速

國內網絡必須配置鏡像加速,不然鏡像幾乎無法下載。

"registry-mirrors": [
"https://registry.docker-cn.com",
"https://dockerproxy.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com"
]

配置鏡像存儲路徑

默認docker的運行文件是在C盤,C盤空間不夠的話,可以設置到別的盤。

新版本的windows Docker Desktop默認使用wsl運行,文件位置都只能由WSL管理:

如果是老版本Hyper-V,可以通過界面設置。更多信息可參照:win10使用WSL 2運行Docker Desktop,運行文件從C盤遷移到其他目錄 - xhznl - 博客園 (cnblogs.com)

docker基本概念、基礎命令可參照:.Net Core in Docker極簡入門(上篇) - xhznl - 博客園 (cnblogs.com)

.net core部署到docker

項目添加docker支持

右鍵項目-添加-Docker支持,目標OS選擇Linux,項目自動創建Dockerfile文件。

文件內容主要是通過.net core cli命令來定義了一系列打包發佈運行的過程。

#使用asp.net 6作爲基礎鏡像,起一個別名爲base
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
#設置工作目錄爲/app
WORKDIR /app
#暴露80和443端口
EXPOSE 80
EXPOSE 443

#使用dotnet 6作爲基礎鏡像,起一個別名爲build
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
#設置工作目錄爲/src
WORKDIR /src
#複製WebApp/WebApp.csproj到/src/WebApp/目錄下
COPY ["WebApp/WebApp.csproj", "WebApp/"]
#運行dotnet restore命令,還原依賴包
RUN dotnet restore "WebApp/WebApp.csproj"
#複製WebApp目錄下的所有文件到/src/WebApp/目錄下
COPY . .
#設置工作目錄爲/src/WebApp/目錄下
WORKDIR "/src/WebApp"
#運行dotnet build命令,編譯項目
RUN dotnet build "WebApp.csproj" -c Release -o /app/build

#使用build作爲基礎鏡像,起一個別名爲publish
FROM build AS publish
#運行dotnet publish命令,發佈項目
RUN dotnet publish "WebApp.csproj" -c Release -o /app/publish /p:UseAppHost=false

#使用base作爲基礎鏡像,起一個別名爲final
FROM base AS final
#設置工作目錄爲/app
WORKDIR /app
#複製publish目錄下的所有文件到/app/目錄下
COPY --from=publish /app/publish .
#設置環境變量ASPNETCORE_URLS爲http://+:80
ENTRYPOINT ["dotnet", "WebApp.dll"]

構建鏡像

在項目根目錄啓動powershell或cmd窗口來執行docker命令

執行構建命令: docker build -t testpub -f ./WebApp/Dockerfile .

注意:參數-f是指定Dockerfile所在的目錄;注意大小寫。

使用docker images可以看到打包成功的鏡像

啓動容器 

執行命令:docker run -d -p 5000:80 --name mytestpub1 testpub

返回容器id說明執行成功

查看運行的容器:docker ps

打開瀏覽器可以正常訪問

 至此,一個簡單的asp.net core web應用就成功運行於docker之中。

 也可以利用vs的功能完成前面所有的步驟:在創建完dockerfile文件之後,選擇在vs上選擇docker運行,vs會自動創建鏡像和容器。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章