在dockerfile中为.net核心应用程序指定环境变量
我有一个.net core 3.1应用程序,作为docker容器部署在aws ecs上。现在我想在dockerfile中指定环境变量,我试图在代码中使用它,但每次都没有得到任何值 以下是.net核心:在dockerfile中为.net核心应用程序指定环境变量,docker,asp.net-core,amazon-ecs,aws-ecr,Docker,Asp.net Core,Amazon Ecs,Aws Ecr,我有一个.net core 3.1应用程序,作为docker容器部署在aws ecs上。现在我想在dockerfile中指定环境变量,我试图在代码中使用它,但每次都没有得到任何值 以下是.net核心: private IWebHostEnvironment Environment { get; set; } public IConfiguration Configuration { get; set; } public void Configu
private IWebHostEnvironment Environment { get; set; }
public IConfiguration Configuration { get; set; }
public void ConfigureServices(IServiceCollection services)
{
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{Environment.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
现在我想用我在Dockerfile中指定的值替换environment.EnvironmentName,但它不起作用。
另外,我在某个地方读到,我可以在执行docker run命令时指定环境变量,但在我的情况下,我不能这样做,因为aws ecs正在运行docker容器
这是docker文件:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app
# Copy everything else and build
COPY . ./
ENV ASPNETCORE_ENVIRONMENT Development
RUN dotnet restore Isofy-Api/*.csproj
RUN dotnet publish Isofy-Api/*.csproj -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "Isofy-Api.dll"]
我做错了什么?您应该在最终图像中指定环境变量
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
ENV ASPNETCORE_ENVIRONMENT Development
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "Isofy-Api.dll"]
您应该在最终图像中指定环境变量
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
ENV ASPNETCORE_ENVIRONMENT Development
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "Isofy-Api.dll"]
我认为最好在任务定义环境变量上指定ASPNETCORE_环境变量,而不是Dockerfile本身。这将允许您根据要部署到的环境(如测试/生产等)更改ASPNETCORE_环境 如果希望通过docker compose在本地运行,请在docker compose中的服务定义中添加环境变量
我认为最好在任务定义环境变量上指定ASPNETCORE\u环境变量,而不是Dockerfile本身。这将允许您根据要部署到的环境(如测试/生产等)更改ASPNETCORE_环境 如果希望通过docker compose在本地运行,请在docker compose中的服务定义中添加环境变量
与在docker或env文件中使用环境变量不同,我更喜欢为每个环境使用单独的aws-ecs-tools-defaults.json,并使用命令行发布:
dotnet ecs deploy-scheduled-task --cfg aws-ecs-tools-defaults.json --container-environment-variables EnvironmentVariableName1=test1;EnvironmentVariableName1=test1
如果您尚未安装dotnet ecs,可以通过以下方式安装:
dotnet tool install --global Amazon.ECS.Tools
与在docker或env文件中使用环境变量不同,我更喜欢为每个环境使用单独的aws-ecs-tools-defaults.json,并使用命令行发布:
dotnet ecs deploy-scheduled-task --cfg aws-ecs-tools-defaults.json --container-environment-variables EnvironmentVariableName1=test1;EnvironmentVariableName1=test1
如果您尚未安装dotnet ecs,可以通过以下方式安装:
dotnet tool install --global Amazon.ECS.Tools
如中最初所述,您可以尝试将入口点更改为entrypoint[“dotnet”、“Isofy Api.dll”、“--environment=Development”]
如中最初所述,您可以尝试将入口点更改为entrypoint[“dotnet”、“Isofy Api.dll”、“--environment=Development”]