标签:配置文件 app 环境 api Net6 Docker Dockerfile
一、Net6 api项目多种环境配置
在发布环境下使用的配置文件是.env.production文件
在开发环境下使用的配置文件是.env.development文件
背景:
在项目开发的过程当中,开发环境与生产环境的配置肯定是不一样的。拿个最简单的例子来说,比如连接字符串这种东西,开发环境肯定不能连生产数据库。在之前的话,这种情况基本靠准备两个同名的配置文件来进行处理,然后你在本地就使用本地的配置文件,生产环境就使用生产环境的配置文件,十分麻烦。
类似之前Vue加入配置文件中加了两个种配置文件一个用于开发时使用,一个用于发布后使用的。
1、创建对应环境的配置文件
ASP.NET Core在应用启动时读取环境变量ASPNETCORE_ENVIRONMENT,ASPNETCORE_ENVIRONMENT可以设置任意值,但框架仅支持三个值:Development、Staging 和 Production,一般都是开发和生产环境,所以我们先在项目中添加appsettings.Development.json、appsettings.Production.json以备用,如下图:
这两个文件写的东西都是在Appsettings.json文件下一块写的,现在创建好后只需在对应文件添加配置,原先的文件只需要有这些默认东西就好,如图
2、修改环境变量测试配置
2-1 右键点api项目,选择属性
2-2选择调试->General->打开调试启动配置文件UI
2-3 修改环境变量
当环境变量为ASPNETCORE_ENVIRONMENT=Development 则使用appsettings.Development.json的配置,
当环境变量为ASPNETCORE_ENVIRONMENT=Production 则使用appsettings.Production.json的配置
二、Docker打包发布.Net6 api项目
1、如果想让生产环境也使用swagger将Program.cs修改为如下图:(发布后也可以使用Swagger)
无论怎样都启动swagger(或者直接把if那里删掉也可以或者就是加个else这样)
if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } else { app.UseSwagger(); app.UseSwaggerUI(); }View Code
2、创建Dockerfile文件
Dockerfile是Docker用于创建镜像的指令文件(给自己的api项目创建个镜像)
2-1 创建文本文件
2-2 在文件中输入如下内容
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. #.Net6基础镜像--默认下载这个镜像 FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base #设置容器工作目录 WORKDIR /app #这里是将镜像的目录下的文件拷贝到 容器的 /app 目录下面 COPY . /app #默认启动端口号是80 EXPOSE 80/tcp # 运行 CMD命令, 注意第二个字符串要换成你当前项目的dll名称 ENTRYPOINT ["dotnet", "SystemContentProject.ApiService.dll"]Dockerfile
2-3 右键选中Dockerfile,选择属性>>复制到输出目录改为始终复制,如下图:
2-4 在生产环境配置添加启动端口配置
开发环境不配置这个是因为它创建时自带着端口号
因为Dockerfile这里设置的端口号是80 参考的这里
3、发布.Net6 Api项目
标签:配置文件,app,环境,api,Net6,Docker,Dockerfile 来源: https://www.cnblogs.com/ZhuMeng-Chao/p/16463218.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。