You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET6 Program.cs中如何注入.env环境变量(Docker适配场景)

.NET6 用.env文件适配Docker配置的正确玩法

1. 先装依赖包

不想自己写代码解析.env的话,直接用现成的DotNetEnv NuGet包就行,用CLI安装:

dotnet add package DotNetEnv

或者在Visual Studio的NuGet包管理器里搜索该包完成安装。

2. 在Program.cs里加载.env并接入配置

在构建应用主机之前,先把.env里的内容加载到环境变量,再让配置系统读取这些变量:

using DotNetEnv;

// 默认加载项目根目录的.env文件,要指定路径的话传参数即可,比如 Env.Load("./config/.env")
Env.Load();

var builder = WebApplication.CreateBuilder(args);

// 把环境变量加入配置源,环境变量优先级比appsettings.json高,会自动覆盖重复的配置项
builder.Configuration.AddEnvironmentVariables();

// 后续正常添加服务、配置中间件
builder.Services.AddControllers();
// ...其他服务配置代码

var app = builder.Build();

// ...中间件配置代码
app.Run();

3. Docker相关配置

用Dockerfile的情况

要把.env文件复制到容器内,否则容器无法读取:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["YourProject.csproj", "."]
RUN dotnet restore "./YourProject.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "YourProject.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "YourProject.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
# 把本地的.env复制到容器工作目录
COPY .env .
ENTRYPOINT ["dotnet", "YourProject.dll"]

用Docker Compose的情况

直接在compose文件里指定.env路径更便捷,无需手动复制:

version: '3.8'
services:
  your-app:
    build: .
    ports:
      - "8080:80"
    env_file:
      - .env  # 填写你的.env文件路径

额外注意点

  • .env文件别提交到Git,一定要加到.gitignore里:
.env
  • 要是不想用第三方库,也可以手动解析.env文件:
var envFilePath = Path.Combine(Directory.GetCurrentDirectory(), ".env");
if (File.Exists(envFilePath))
{
    foreach (var line in File.ReadAllLines(envFilePath))
    {
        // 跳过注释和空行
        if (string.IsNullOrWhiteSpace(line) || line.StartsWith("#"))
            continue;
        // 分割键值对,只按第一个=分割,避免值里带=的情况
        var keyValue = line.Split('=', 2);
        if (keyValue.Length != 2) continue;
        
        Environment.SetEnvironmentVariable(keyValue[0].Trim(), keyValue[1].Trim());
    }
}

var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddEnvironmentVariables();

内容的提问来源于stack exchange,提问作者DDank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:55:19