如何編制微軟.Net Core的docker檔案?
Microsoft .NET核心的一個主要特性是它能夠在多個作業系統(Linux,Mac,Windows)和容器化環境中作為跨平臺框架執行。Microsoft努力繼續支援容器化環境並增強CI / CD管道。為了幫助您入門,Microsoft根據常見用例提供了許多不同的docker映象供您使用。在這篇文章中,我將討論在.NET Core中使用容器和Dockerfiles。
本質上,A Dockerfile是一個包含指令集的純文字,每條指令都列出了建立工作映象所需的步驟,.NET Dockerfile也是這樣:
例如:設定環境變數,複製檔案或執行指令碼。無論何時執行指令,都會在初始Docker基礎映象之上建立一個新層。
Docker基礎映象是構建層的起始點映象(通常由具有OS配置的檔案系統結構組成),以建立所有容器映象。
例如,為了將LAMP堆疊作為Docker容器執行,您可以使用Ubuntu 14.04或CentOS 7或任何Linux OS作為基本映象。然後,您將在其上安裝Apache,MySQL和PHP,結果將是您的最終LAMP Docker映象,可以作為容器執行。
基本dockerfile示例:
FROM ubuntu:15.04 COPY . /app RUN make /app CMD python /app/app.py |
FROM:從ubuntu:15.04 Docker映象建立一個圖層。
COPY:將專案當前目錄中的(複製)檔案新增到Docker主機路徑中。
RUN:用make構建你的應用程式。
CMD:指定在容器中執行的命令。
Dockerfile命令
FROM: FROM指令指示基本映象並初始化後續指令和操作的新構建階段。對於.NET核心應用程式,選擇正確的根映象非常重要:
From microsoft/dotnet:<version>-runtime-deps - |
用於部署自包含的部署應用程式(編譯成DLL):
From microsoft/dotnet: <version>-runtime - |
用於部署.NET Core控制檯應用程式:
From microsoft/dotnet: <version>-aspnetcore-runtime - |
用於部署ASP.NET核心應用程式(編譯成DLL並執行應用程式):
From microsoft/dotnet: <version>-sdk |
COPY: COPY指令從中複製新檔案或目錄 (專案根資料夾)並將它們新增到路徑中容器的檔案系統 (Docker主機路徑)。通常,.NET docker檔案位於專案根資料夾中,複製指令將是
COPY <src>... <dest> COPY . /app |
RUN: RUN指令將在當前映象的頂部執行任何命令並繼續執行下一條指令。生成的已提交映象將用於Dockerfile中的下一步。可以使用RUN命令執行.NET核心命令,如dotnet restore,dotnet build命令。
RUN dotnet restore RUN dotnet build |
CMD:CMD命令是為執行容器提供預設值。Dockerfile中只能有一條CMD指令。如果列出多個CMD,則只有最後一個CMD才會生效。
ENTRYPOINT:Entrypoint允許您將配置一個容器為可執行的。
WORKDIR:WORKDIR指令為RUN,CMD,ENTRYPOINT,COPY和ADD指令的設定工作目錄。如果WORKDIR不存在,即使它未在任何後續Dockerfile指令中使用,也將建立它。如果提供了相對路徑,則它將相對於先前WORKDIR指令的路徑。例如:
WORKDIR /app WORKDIR src WORKDIR assets |
輸出路徑Dockerfile將是/ app / src / assets。
.NETcore docker檔案
FROM microsoft/aspnetcore-build:2.1 WORKDIR /app COPY . ./app RUN dotnet restore RUN dotnet build WORKDIR /app/src/MyApponDocker ENTRYPOINT dotnet run |
構建它:在PowerShell中切換到上述配置檔案所在目錄,執行
docker build -t dockerApp
Docker現在將開始構建映象,下載並安裝多個元件和包。
執行Docker
構建成功後,執行:
docker run -p 8080:80 dockerApp
這告訴Docker執行名為dockerApp的映象。
重要:
microsoft/dotnet:-runtime-deps - 用於部署自包含的部署應用程式
microsoft/dotnet:-runtime - 用於部署.NET核心控制檯應用程式
microsoft/dotnet:-aspnetcore-runtime - 用於部署ASP.NET核心應用程式
microsoft/dotnet:-sdk - 用於構建.NET Core(或ASP.NET核心應用程式)
.NET Core SDK - 這是構建.NET Core應用程式所需的。
.NET Core Runtime - 這是執行.NET Core應用程式所需的。
結論
現在,dotnet的Docker使.net應用程式能夠在容器化的環境中完全執行而無需任何程式碼更改。與容器化帶來的優勢相結合。
相關文章
- 【Azure Developer】已釋出好的.NET Core專案檔案如何打包為Docker映象檔案DeveloperDocker
- .net web core 如何編碼實現檔案上傳功能Web
- 如何在 Linux 中安裝微軟的 .NET Core SDKLinux微軟
- .Net Core 中介軟體之靜態檔案(StaticFiles)
- ASP.NET Core - .NET 6 的入口檔案ASP.NET
- .net core使用配置檔案
- .NET Core 如何上傳檔案及處理大檔案上傳
- 如何在 .NET Core WebApi 中處理 MultipartFormDataContent 中的檔案WebAPIORM
- ASP.NET Core - 入口檔案ASP.NET
- ASP.NET Core 配置檔案ASP.NET
- .NET Core中如何讀取appsetting.json配置檔案APPJSON
- Docker | dockerfile 檔案編寫Docker
- .Net Core中的配置檔案原始碼解析原始碼
- ASP .Net Core 中介軟體的使用(一):搭建靜態檔案伺服器/訪問指定檔案伺服器
- .NET Core容器化(Docker)Docker
- 15.ASP.NET Core 應用程式中的靜態檔案中介軟體ASP.NET
- .net core 獲取檔案MIME型別型別
- .NET Core 6.0之讀取配置檔案
- asp .net core 靜態檔案資源
- .net core 靈活讀取配置檔案
- Linux伺服器使用Docker部署.net Core專案Linux伺服器Docker
- Docker & ASP.NET Core (5):Docker ComposeDockerASP.NET
- .net core遷移實踐:專案檔案csproj的轉換
- Net.Core匯入EXCel檔案裡的資料Excel
- .NET CORE 2.1 匯出excel檔案的兩種方法Excel
- asp.net core 系列之靜態檔案ASP.NET
- Asp.Net Core入門之配置檔案ASP.NET
- .Net Core如何優雅的實現中介軟體
- 微軟:正式釋出針對 .NET Core的 Winform 設計器微軟ORM
- ASP.NET Core 中的管道機制ASP.NET
- .NET和.NET Core Web APi FormData多檔案上傳對比WebAPIORM
- GC機制+字元編碼+檔案操作GC字元
- .Net Core 編碼規範
- .NET Core基礎篇之:配置檔案讀取
- ASP.NET Core檔案壓縮最佳實踐ASP.NET
- Asp.Net Core入門之靜態檔案ASP.NET
- .NET Core Web APi大檔案分片上傳研究WebAPI
- Asp .Net Core 讀取appsettings.json配置檔案APPJSON