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

感谢您的认真阅读,若有问题请大胆斧正;以为有用,请下方或加关注。

本文欢迎转载,但请保留此段声明,且在文章页面明显位置注明本文的做者及原文连接。

相关文章
相关标签/搜索