适用于不同环境的ASP.NET Dockerfile

jtw3ybtb  于 5个月前  发布在  .NET
关注(0)|答案(1)|浏览(104)

我有以下Dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build-env
WORKDIR /app
EXPOSE 80

ARG ASPNETCORE_ENVIRONMENT=Production
ENV ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT}

COPY *.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "OrderAPI.dll"]

字符串
我想做的就是在build期间指定环境。现在我可以使用-e ASPNETCORE_ENVIRONMENT在特定环境中构建并运行,但我希望构建在特定环境中完成。
当我看到其他人是如何使用shell脚本等来完成它时,是否有一种更简单的方法在Dockerfile中完成它。对于我的其他dockerfile,我只是传入参数,但不确定是否有appsettings。
我已经添加

ARG ASPNETCORE_ENVIRONMENT=Production
ENV ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT}


但是运行下面的仍然在生产环境中运行(当然我可以在dockerfile中更改它,但不想这样做)

docker build --build-arg ASPNETCORE_ENVIRONMENT=Development -t order-api:latest .

vfh0ocws

vfh0ocws1#

您的ENV语句位于Dockerfile的构建部分,因此它不会包含在最终映像中。Dockerfile中的各个阶段非常独立,几乎没有任何东西可以从一个阶段转移到下一个阶段。
将其移动到最后一个部分,它应该在运行容器时设置。

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build-env
WORKDIR /app
EXPOSE 80

COPY *.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:7.0
ARG ASPNETCORE_ENVIRONMENT=Production
ENV ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT}
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "OrderAPI.dll"]

字符串

相关问题