簡體   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