views 多个文件夹 netcore_优化 .net core 应用的 dockerfile
优化 .net core 应用的 dockerfile
Intro
在给 .net core 应用的写 dockerfile 的时候一直有个苦恼,就是如果有很多个项目,在 dockerfile 里写起来就会很繁琐,有很多项目文件要 copy,dockerfile 还不支持直接批量复制项目文件,今天要改的一个项目也是有好多个项目文件,不想再一个一个复制,于是 google 一下看有没有比较好的解决方案,找到一个折中的解决方案,分享一下
Solution
首先把所有的项目文件拷贝到 docker 镜像内
COPY */*.csproj ./
然后根据项目文件名称创建项目文件夹,并移动项目文件到对应的项目目录下
原来的 dockerfile
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-alpine AS build-envWORKDIR /src
# Copy csproj and restore as distinct layersCOPY ActivityReservation.Common/*.csproj ActivityReservation.Common/COPY ActivityReservation.Models/*.csproj ActivityReservation.Models/COPY ActivityReservation.DataAccess/*.csproj ActivityReservation.DataAccess/COPY ActivityReservation.Business/*.csproj ActivityReservation.Business/COPY ActivityReservation.Helper/*.csproj ActivityReservation.Helper/COPY ActivityReservation.WechatAPI/*.csproj ActivityReservation.WechatAPI/COPY ActivityReservation.AdminLogic/*.csproj ActivityReservation.AdminLogic/COPY ActivityReservation.API/*.csproj ActivityReservation.API/COPY ActivityReservation/ActivityReservation.csproj ActivityReservation/
# RUN dotnet restore ActivityReservation/ActivityReservation.csproj## diff between netcore2.2 and netcore3.0WORKDIR /src/ActivityReservationRUN dotnet restore
# copy everything and buildCOPY . .RUN dotnet publish -c Release -o out ActivityReservation/ActivityReservation.csproj
# build runtime imageFROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine
LABEL Maintainer="WeihanLi"WORKDIR /appCOPY --from=build-env /src/ActivityReservation/out .EXPOSE 80ENTRYPOINT ["dotnet", "ActivityReservation.dll"]
修改之后的 dockerfile
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-alpine AS build-envWORKDIR /src
# Copy csproj and restore as distinct layers# https://andrewlock.net/optimising-asp-net-core-apps-in-docker-avoiding-manually-copying-csproj-files-part-2/COPY */*.csproj ./RUN for file in $(ls *.csproj); do mkdir -p ${file%.*}/ && mv $file ${file%.*}/; done
## diff between netcore2.2 and netcore3.0WORKDIR /src/ActivityReservationRUN dotnet restore
# copy everything and buildCOPY . .RUN dotnet publish -c Release -o out ActivityReservation/ActivityReservation.csproj
# build runtime imageFROM mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine
LABEL Maintainer="WeihanLi"WORKDIR /appCOPY --from=build-env /src/ActivityReservation/out .EXPOSE 80ENTRYPOINT ["dotnet", "ActivityReservation.dll"]
是不是精简了许多,来看一下修改前后的对比,更明显的对比一下:
核心代码:
# 拷贝所有的二级目录下的项目文件COPY */*.csproj ./# 根据项目文件名称创建项目文件夹,并移动项目文件到对应的项目目录下RUN for file in $(ls *.csproj); do mkdir -p ${file%.*}/ && mv $file ${file%.*}/; done
More
注:上面的方法适用于项目文件目录名称和项目文件名称一致的情况,默认创建的项目应该都会符合这样的要求,如果你的项目文件是三级目录,如 src/*/*.csproj
的,需要自己根据项目情况调整 dockerfile
有没有学到呢~~
Reference
https://stackoverflow.com/questions/51372791/is-there-a-more-elegant-way-to-copy-specific-files-using-docker-copy-to-the-work
https://andrewlock.net/optimising-asp-net-core-apps-in-docker-avoiding-manually-copying-csproj-files-part-2/
https://github.com/WeihanLi/ActivityReservation/blob/dev/Dockerfile
views 多个文件夹 netcore_优化 .net core 应用的 dockerfile相关推荐
- views 多个文件夹 netcore_.NET Core 分发打包
由于 .NET Core 现已可用于更多平台,因此了解如何为其打包.命名并进行版本控制将很有用. 这样,无论用户选择在哪里运行 .NET,包维护人员均可以帮助确保获得一致的体验. 本文对以下用户非常有 ...
- views 多个文件夹 netcore_.NET Core中的使用Kestrel服务器理解及应用
Kestrel是一个基于libuv的跨平台.NET Core web服务器,libuv是一个跨平台的异步I/O库.ASP.NET Core模板项目使用Kestrel作为默认的web服务器. Kestr ...
- 优化 .net core 应用的 dockerfile
优化 .net core 应用的 dockerfile Intro 在给 .net core 应用的写 dockerfile 的时候一直有个苦恼,就是如果有很多个项目,在 dockerfile 里写起 ...
- views 多个文件夹 netcore_Visual Studio 2019发布.NET Core项目部署或者独立运行的方法...
Visual Studio 2019发布.NET Core项目部署或者独立运行的方法 Visual Studio 2019是一款专为程序开发人员设计,支持 Windows 和 Mac系统,适用范围广, ...
- vue文件命名规范和文件夹命名规范
views 命名 views 文件夹下面是由 以页面为单位的vue文件 或者 模块文件夹 组成的,放在 src 目录之下,与 components.assets 同级. views 下的文件夹命名 v ...
- vue-cli脚手架初始化项目各个文件夹用途
一.安装Vue脚手架 1.第一步(仅第一次执行):全局安装@vue/cli npm i @vue/cli -g 2.切换到要创建项目的目录,然后创建项目 vue create XXX 3.启动项目 n ...
- Drupal8 社区文档之主题文件夹结构
主题是一组文件,定义了表示层.你也可以创建一个或多个"子主题"或主题变奏曲.只有.info.yml文件是必需的,但最重要的主题和分主题将使用其他文件以及.本页列出的文件和文件夹,发 ...
- win7系统计算机文件夹缓慢,windows7搜索文件非常慢的解决办法以及优化方法
用过windows7的朋友应该都知道:通常情况下windows 7搜索文件是相当慢的,甚至还有时完全搜不到文件.这一点着实让大硬盘用户头疼不已,以至于不得不转投第三方搜索工具来搜索文件,如果你还是喜欢 ...
- win10文件夹加密_win10优化清理工具:Windows10下删除垃圾文件的12个最佳工具
您的电脑有时可能会充满不必要的临时文件和程序,从而导致速度变慢.垃圾文件和应用程序可能是一个问题,所以今天我们将向您展示在Windows10上删除垃圾的最佳工具.以下便是ghost123为大家推荐的w ...
最新文章
- nginx内置变量 大全
- 儿童手工制作日历_怎么做手工儿童卡通绵羊日程管理小日历
- php opcache 坑,PHP7 opcache缓存清理问题
- 双中心积分计算氟化氢HF的动能和势能
- 动态添加 ajax,ajax动态的添加内容【原创】
- 供给测结构性改革内容_智能包装结构,提高可测性
- 威纶触摸屏使用说明书_MODBUS通信之触摸屏与变频器通信知识分享(一)
- Javascript高级程序设计第二版第十二章--Event--笔记
- 图解TCP 的重传、滑动窗口、流量控制和拥塞控制机制
- 程序员的进阶课-架构师之路(16)-散列表(哈希表)
- 《PHP、MySQL和Apache入门经典(第5版)》一2.7 基本安全规则
- 两个list取交集_Java基础面试题-说说你知道的几个Java集合类:list、set、queue、map...
- fmt—fmt:formatDate的输出格式
- 微软桌面虚拟化MED-V系列教程
- 轮式联合收割机液压系统设计
- ubuntu 20.10 安装万能五笔(ibus模式)
- CAD重装时显示已安装
- mysql中的alter_MySQL中Alter用法
- Python 爬取拉钩网工作岗位
- 成功解决FAT32 No GRLDR问题
热门文章
- DOTNET零碎要点---字符串截取操作
- Video-Swin-Transformer (二)
- java版本不兼容_java 中jdk版本不兼容的问题小记
- 源数据怎么排查重复MySQL_面试官:在使用mysql数据库时,遇到重复数据怎么处理?...
- mysql rpm server_记录一次最新版MySQL-server-5.6.20-1.el6.x86_64.rpm的安装
- 如何获得CSDN深色模式(基于Edge的强制深色获取)
- radiobutton怎么变成竖排_民间修谱悄然兴起,花120万元修家谱,你怎么看?【饮茶论道】...
- 大数乘加运算然后取模 c++_技术解析 | FPGA运算单元可支持高算力浮点
- mysql 5.7.29下载安装_deepin20 离线安装 MySQL5.7.29
- location定位_javascript自学记录:location对象