簡體   English   中英

如何在 docker-compose 命令中將 appsettings.json 值替換為 .env 變量以啟動 ASP.NET 核心 MVC 應用程序?

[英]How do I replace appsettings.json values with .env variable in docker-compose command to launch an ASP.NET Core MVC app?

我有一個通過 Docker 部署的 C# / ASP.NET 核心 MVC 應用程序。 我一直在appsetting.json文件中對變量進行硬編碼,並通過這樣的調用訪問它們

services.Configure<ApiEndpoints>(Configuration.GetSection("ApiEndpoints"));

在我的Startup.cs中。

但最近我開始添加用於部署到.env文件中的變量,並像這樣進行部署docker-compose --env-file.env up 但我無法在 .NET 應用程序中訪問我的.env文件中的變量。

例如我試過這個

Console.WriteLine(Configuration.GetSection("APPSETTINGS_DB_STR"));

Startup.cs中的.env文件中,我添加了這個變量APPSETTINGS_DB_STR=isThisLoggingCorrectly並將其記錄為

amaranth_main               | Microsoft.Extensions.Configuration.ConfigurationSection

在我的控制台中... 那么如何讓 asp.net 訪問 docker.env 變量?

這是我的docker-compose.yml

version: '3.8'

volumes:
  data:

services:
  postgresql_MENTIONvlt_bg:
    image: postgres
    # explicit container name
    container_name: postgresql_vlt_bg
    environment:
      - POSTGRES_USER=${POSTGRES_USER}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - POSTGRES_DB=${POSTGRES_DB}
    ports:
      - 5432:5432
    volumes:
      - data:/var/lib/postgresql_vlt_bg
  amaranth_main:
    container_name: amaranth_main
    links:
      - postgresql_MENTIONvlt_bg
    depends_on:
      - postgresql_MENTIONvlt_bg
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8000:5000
      - 8001:5001
    environment:
      - ASPNETCORE_ENVIRONMENT=Release
      - ASPNETCORE_Kestrel__Certificates__Default__Password=${Kestrel_Cert_Password}
      - ASPNETCORE_Kestrel__Certificates__Default__Path=${Kestrel_Cert_Rel_Path}
      - APPSETTINGS_DB_STR=${APPSETTINGS_DB_STR}
    volumes:
      - ${Kestrel_Cert_Abs_Path}:/https:ro

PS POSTGRES_USER, POSTGRES_PASSWORD,POSTGRES_DB正在通過就好了。

解決方法是首先將APPSETTINGS_DB_STR變成APPSETTINGS__DB__STR 然后我必須在我的 c# 應用程序代碼中訪問這樣的變量。 Environment.GetEnvironmentVariable(“APPSETTINGS__DB__STR”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM