Visual Studio容器項目工程化心得

引言  

  關注博主的網友會看到我使用ASP.NET Core 容器化部署企業級項目的過程, 回想到開發過程當中,鄙人有一些工程化心得, 分享給同窗們。html

 

項目工程化

  由於本項目涉及單元測試Project、容器化部署、本地化的sqlite數據庫,nlog日誌, 所以有必要給出個人Visual Studio 2019 解決方案目錄:nginx

. ├── container │ ├── app │ ├── publish │ ├── Dockerfile │ ├── nginx │ ├── Dockerfile │ ├── nginx.conf │ └── docker-compose.yml ├── .dockerignore ├── Eqid-Manager.sln ├── .git ├── .gitattributes ├── .gitignore ├── NuGet.Config ├── src │ ├── EqidManager │ ├── Property │ ├── PublishProfiles │ ── FolderPublish.pubxml └── test ├── EqidManager.Test
須要理解幾點:

① 創建container文件夾

  該專門存放容器化部署相關的文件, 將開發內容和部署內容分開是一種DevOps實踐, 同時也爲咱們之後實現CI/CD作些許鋪墊。git

  小技巧:  在使用Visual Studio的時候,可創建與以上文件件同名的解決方案文件夾, 這樣便於開發人員編寫部署腳本。sql

 

② 編寫git ignore 文件

  網上不少大牛分享過git的操做技巧,add, commit, push, checkout、merge 相信不少開發人員爛熟如心。docker

可是做爲企業級工程,多少會涉及一些不須要代碼倉庫管理的文件(密鑰文件、臨時文件、 本地數據庫文件、 日誌文件), 這就涉及git ignore的用法,更豐富的官方文檔在這裏: https://git-scm.com/docs/gitignore數據庫

這個操做不少時候是由架構師一次性配置完成, 不少開發同窗沒有實操過, 今天咱們也來玩弄一下。架構

// 在解決方案.sln 同級目錄下編寫的.gitignore文件:忽略vs user file,nuget package,temp files
 *.suo *.user packages .vs .nuget container/app/publish/* 
// 在EqidManager項目文件夾下編寫.gitignore文件:忽略localdb,logs,temp files
*.suo *.user bin obj internal-nlog.txt EqidManager.db healthchecksdb

 

③  編寫WebDeploy Publish Profile

  container文件夾中包含app和nginx的鏡像準備文件和對應的Dockerfile,這裏咱們關注 app/publish文件夾, 裏面將會存放本次應用程序的最終可執行文件。app

使用WebDeploy部署的時候 ,在該路徑生成部署文件,便於統一管理, 產生的FolderPublish.pubxml 以下:ide

<?xml version="1.0" encoding="utf-8"?> <!-- 此文件由 Web 項目的發佈/打包過程使用。能夠經過編輯此 MSBuild 文件 自定義此過程的行爲。爲了解與此相關的更多內容,請訪問 https://go.microsoft.com/fwlink/?LinkID=208121。 --> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <WebPublishMethod>FileSystem</WebPublishMethod> <PublishProvider>FileSystem</PublishProvider> <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> <LastUsedPlatform>Any CPU</LastUsedPlatform> <SiteUrlToLaunchAfterPublish /> <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> <ExcludeApp_Data>False</ExcludeApp_Data> <ProjectGuid>1213badd-176e-4c24-af84-bfdb0517b692</ProjectGuid> <publishUrl>../../container/app/publish</publishUrl> <DeleteExistingFiles>False</DeleteExistingFiles> </PropertyGroup> </Project>

<!-- 關注黃色背景行,發佈目錄使用相對路徑(相對於項目文件***.csproj的路徑) --> 

  WebDeploy根據此配置會在工程目錄container/app/publish下生成部署文件, 準備部署時可直接拷貝container文件夾, 生成鏡像並造成容器。
  本文只是粗略分享 Devloper使用Visual Studio開發容器化項目的實踐,
CI/CD請持續關注。單元測試

做者: JulianHuang

感謝您的認真閱讀,若有問題請大膽斧正;以爲有用,請下方或加關注。

本文歡迎轉載,但請保留此段聲明,且在文章頁面明顯位置註明本文的做者及原文連接。

相關文章
相關標籤/搜索