[英]How to set environment variables (ASPNETCORE_ENVIRONMENT) in AzureDevops for Dockerfile?
我打算使用 Azure Devops 為我的 dockerized .NET Core 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_ENVIRONMENT
以及ENTRYPOINT ["dotnet", "Api.dll", "--environment=Development"]
。 但是,如何使其在 Azure Devops 管道中變得靈活?
例如具有不同的環境,如development
和production
。 所以假設我有另一個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.