Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在AzureDevops中为Dockerfile设置环境变量(ASPNETCORE_环境)?_C#_Docker_.net Core_Azure Devops_Continuous Integration - Fatal编程技术网

C# 如何在AzureDevops中为Dockerfile设置环境变量(ASPNETCORE_环境)?

C# 如何在AzureDevops中为Dockerfile设置环境变量(ASPNETCORE_环境)?,c#,docker,.net-core,azure-devops,continuous-integration,C#,Docker,.net Core,Azure Devops,Continuous Integration,我计划使用Azure Devops为我的Docked.NET核心API制作CI/CD。 我的API现在有appsettings.json和appsettings.Development.json 下面是我的Dockerfile: FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base WORKDIR /app EXPOSE 80 ENV ASPNETCORE_ENVIRONMENT Development FROM mcr.microsof

我计划使用Azure Devops为我的Docked.NET核心API制作CI/CD。 我的API现在有
appsettings.json
appsettings.Development.json

下面是我的Dockerfile:

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

ENV ASPNETCORE_ENVIRONMENT Development

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

FROM build AS publish
RUN dotnet publish "Api.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Api.dll", "--environment=Development"]
如图所示,我将环境设置为
ASPNETCORE\u environment
,并将
入口点[“dotnet”、“Api.dll”、“--environment=Development”]
。然而,如何在Azure Devops管道中使其灵活

例如,拥有不同的环境,如
开发
生产
。假设我有另一个
appsettings.Production.json
,如果我将环境设置为
Production
,项目将自动拾取此文件,而不是
appsettings.Development.json

到底有没有这样做,或者我对整个流程的理解是错误的?
谢谢。

在这种情况下检查答案:

您可以设置一个
ARG变量名
并将ENV引用到ARG变量。然后,您可以在docker构建映像时替换这些变量
$docker build--build arg var\u name=$(VARIABLE\u name)

例如,在dockerfile中添加ARG,并让ENV变量引用它:

ARG SECRET
ENV ASPNETCORE_ENVIRONMENT=$SECRET
您可以单独使用dock build任务和dock push任务,因为buildandpush命令不能接受参数。并在管道中设置变量
SECRET

设置生成参数
SECRET=$(SECRET)
以替换ARG SECRET


在这种情况下,请检查答案:

您可以设置一个
ARG变量名
并将ENV引用到ARG变量。然后,您可以在docker构建映像时替换这些变量
$docker build--build arg var\u name=$(VARIABLE\u name)

例如,在dockerfile中添加ARG,并让ENV变量引用它:

ARG SECRET
ENV ASPNETCORE_ENVIRONMENT=$SECRET
您可以单独使用dock build任务和dock push任务,因为buildandpush命令不能接受参数。并在管道中设置变量
SECRET

设置生成参数
SECRET=$(SECRET)
以替换ARG SECRET


与入口点一起使用CMD。您将这个
“--environment=Development”
放在CMD中。如果不传递任何内容,CMD就像一个默认占位符一样工作,否则将传递任何内容。您看过这篇文章吗?在那里,一切都描述得很好;)与ENTRYPOINT一起使用CMD。您将这个
“--environment=Development”
放在CMD中。如果不传递任何内容,CMD就像一个默认占位符一样工作,否则将传递任何内容。您看过这篇文章吗?在那里,一切都描述得很好;)你查过我的答复了吗?有帮助吗?你查过我的回复了吗?有帮助吗?