iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
0
DevOps

.NET Core 專案持續整合與部署系列 第 15

Virtualize:透過 Docker 建置 .NET Core 專案

在國慶聯假前,此系列文每天的發文時都會以最簡陳述為主,以求在繁忙的日常中,至少能先維持挑戰鐵人賽的進度,並且逐漸拓展思路與系列構成。預期會在國慶聯假好好的去修文。

好,或許這篇應該在系列文前幾天就要講了,然後再搭配每個新產生的整合作業(測試、分析、產生文件)去逐步完善設定檔。但是對我來說鐵人賽其實很難在一開始就訂出一個完美的綱要,尤其是在時間緊迫的時候,通常是想到什麼與主題相關的就先進行產出。我會在後面修稿時重新進行組織,並在最後一天整理出一個適合循序閱讀的綱要、目錄。

既然要進行持續整合與部署,能重複建立一個相同的環境去執行開發、測試、整合、發布就是必須的是,此時就需要仰賴虛擬化技術,而近年成為主流的容器技術就成為首選。所以這篇就是講述如何透過 Docker 建立虛擬化環境,並透過 GitLab CI 建立一個持續整合的流水線。

Microsoft 官方有為 .NET Core 建立相關的 Docker Image,可以參照 Docker Hub 的 .NET Core 頁面。而如期頁面所述,相關的 Docker Image 分為以下幾種:

  1. dotnet/core/sdk : .NET Core SDK,開發、建置時使用
  2. dotnet/core/aspnet : ASP.NET Core 的執行環境,只需要執行 ASP.NET Core 的 FDD 程式時使用
  3. dotnet/core/runtime : .NET Core 的執行環境,只需要執行 .NET Core 的 FDD 程式時使用
  4. dotnet/core/runtime-deps : 只有 .NET Core 在執行需要的環境,並沒有包含 .NET Core 本身,是用來執行 .NET Core 的 SCD 程式時使用。

簡單來說,我們會使用 dotnet/core/sdk 進行各種與開發階段相關的作業,並且建置出一個 .NET Core 程式。若該程式是 FDD,就使用 dotnet/core/aspnet 或者 dotnet/core/runtime 去執行;若該程式是 SCD,就使用 dotnet/core/rumtime-deps 執行。

那我們就開始吧!首先先下載 dotnet/core/sdk的Docker Image。

$ docker pull mcr.microsoft.com/dotnet/core/sdk:2.2
2.2: Pulling from dotnet/core/sdk
092586df9206: Pull complete
ef599477fae0: Pull complete
4530c6472b5d: Pull complete
d34d61487075: Pull complete
8bf998ab1ec6: Pull complete
45c553262948: Downloading  68.65MB/171.2MB
36e63bcdc5b0: Downloading  97.85MB/303MB

再透過 Volume 將專案程式碼 mount 到 Docker Container 中,去執行一系列的操作

$ docker run -it -v $PWD:/app mcr.microsoft.com/dotnet/core/sdk:2.2
root@1692fb18eb34:/\# 
# dotnet build

TODO

  • 補完 Docker 容器跑的程序
  • 補充 GitLab CI 設定
  • 補充 .NET Core 版本的生命週期

上一篇
Integrate:API Documents
下一篇
GitLab CI:Runner 以及初始設定檔案
系列文
.NET Core 專案持續整合與部署31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言