繁体   English   中英

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

[英]How to set environment variables (ASPNETCORE_ENVIRONMENT) in AzureDevops for Dockerfile?

我打算使用 Azure Devops 为我的 dockerized .NET Core API 做 CI/CD。 我的 API 现在有appsettings.jsonappsettings.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_ENVIRONMENT以及ENTRYPOINT ["dotnet", "Api.dll", "--environment=Development"] 但是,如何使其在 Azure Devops 管道中变得灵活?

例如具有不同的环境,如developmentproduction 所以假设我有另一个appsettings.Production.json ,如果我将环境设置为Production ,项目将自动获取此文件而不是appsettings.Development.json

无论如何要这样做还是我理解这整个流程是错误的? 谢谢你。

在这种情况下检查答案: Inject env variable into build stage of image

您可以设置ARG var_name并将 ENV 引用到 ARG 变量。 然后您可以在 docker 构建映像时替换这些变量$ docker build --build-arg var_name=$(VARIABLE_NAME)

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

ARG SECRET
ENV ASPNETCORE_ENVIRONMENT=$SECRET

您可以分别使用停靠构建任务和停靠推送任务,因为 buildandpush 命令不能接受 arguments。 并在您的管道中设置一个变量SECRET

在此处输入图像描述

设置 Build Arguments SECRET= $(SECRET)来替换 ARG SECRET

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM