我有以下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 .
型
1条答案
按热度按时间vfh0ocws1#
您的ENV语句位于Dockerfile的构建部分,因此它不会包含在最终映像中。Dockerfile中的各个阶段非常独立,几乎没有任何东西可以从一个阶段转移到下一个阶段。
将其移动到最后一个部分,它应该在运行容器时设置。
字符串