未应用ASPNETCORE\u URL(部署在docker容器中)

未应用ASPNETCORE\u URL(部署在docker容器中),docker,asp.net-core,environment-variables,Docker,Asp.net Core,Environment Variables,我正在尝试让我的asp.net core应用程序使用ASPNETCORE_URL设置启动URL。它没有按预期工作 我在网上找到的所有东西都试过了,但我总是被卡住。该应用程序在没有环境变量的情况下工作,并在docker容器中运行。但是,在启用环境变量时,它不起作用 期望结果:0.0.0.0:5000 结果:本地主机:5000 启动: public Startup(IConfiguration configuration, IWebHostEnvironment env) {

我正在尝试让我的asp.net core应用程序使用ASPNETCORE_URL设置启动URL。它没有按预期工作

我在网上找到的所有东西都试过了,但我总是被卡住。该应用程序在没有环境变量的情况下工作,并在docker容器中运行。但是,在启用环境变量时,它不起作用

期望结果:0.0.0.0:5000 结果:本地主机:5000

启动:

        public Startup(IConfiguration configuration, IWebHostEnvironment env)
    {
        Configuration = new ConfigurationBuilder()
             .SetBasePath(env.ContentRootPath)
          .AddJsonFile("appsettings.json")
          .AddJsonFile($"appsettings.{env.EnvironmentName}.json")
          .AddEnvironmentVariables()
          .Build();
    }
dockerfile中的环境变量:

ENV ASPNETCORE_URLS=http://+:5000
Docker文件:

#See https://aka.ms/containerfastmode to understand how Visual Studio uses 

this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 5000
ENV ASPNETCORE_URLS=http://+:5000

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["Platform/Platform.API/Platform.API.csproj", "Platform.API/"]
COPY ["Platform/Platform.Domain/Platform.Domain.csproj", "Platform.Domain/"]
COPY ["Platform/Platform.DataAccess/Platform.DataAccess.csproj", "Platform.DataAccess/"]
RUN dotnet restore "Platform.API/Platform.API.csproj"
COPY ./Platform .
WORKDIR "/src/Platform.API"
RUN dotnet build "Platform.API.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "Platform.API.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Platform.API.dll"]
应用程序会检测到环境变量,但由于某些原因它不会被使用


提前谢谢

这是对
DOCKERFILE
将其移动到应用程序图像以产生效果

FROM base AS final
WORKDIR /app
ENV ASPNETCORE_URLS=http://+:5000
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Platform.API.dll"]
ENV
关键字根据

ENV指令将环境变量设置为 . 此值将在所有后续操作的环境中 在构建阶段中的指令,可以在多个版本中内联替换 嗯

开始新的构建阶段

FROM指令初始化新的构建阶段并设置基础 用于后续说明的图像。因此,必须创建有效的Dockerfile 从FROM指令开始

您可以通过构建此
DOCKERFILE

from alpine
ENV asdf test
RUN echo $asdf

from alpine
RUN echo $asdf
返回

$ docker build -t envtest .
Sending build context to Docker daemon  6.656kB
Step 1/5 : from alpine
 ---> 5cb3aa00f899
Step 2/5 : ENV asdf test
 ---> Running in 91ae4904857e
Removing intermediate container 91ae4904857e
 ---> 63ef857d07a6
Step 3/5 : RUN echo $asdf       <------ works in same build stage
 ---> Running in b9037c76cc93
test
Removing intermediate container b9037c76cc93
 ---> 17edf57d8055
Step 4/5 : from alpine
 ---> 5cb3aa00f899
Step 5/5 : RUN echo $asdf       <------- does not in next build stage
 ---> Running in 62b42e7c28d8

Removing intermediate container 62b42e7c28d8
 ---> 7e6a8a58442f
Successfully built 7e6a8a58442f
Successfully tagged envtest:latest
$docker build-t envtest。
正在将生成上下文发送到Docker守护进程6.656kB
步骤1/5:从阿尔卑斯山
--->5cb3aa00f899
步骤2/5:环境asdf测试
--->在91ae4904857e中运行
拆卸中间容器91ae4904857e
--->63ef857d07a6
步骤3/5:在b9037c76cc93中运行echo$asdf
测试
拆卸中间容器b9037c76cc93
--->17edf57d8055
步骤4/5:从阿尔卑斯山
--->5cb3aa00f899
步骤5/5:在62b42e7c28d8中运行echo$asdf
拆卸中间容器62b42e7c28d8
--->7e6a8a58442f
成功构建7e6a8a58442f
已成功标记envtest:最新版本

请分享您完整的
DOCKERFILE
编辑的帖子,以获得DOCKERFILE。不要认为这与此相关,因为问题在于asp.net内核使用的端口错误。即使没有在容器中运行,Dockerfile中的位置似乎并不重要,但它是ENV ASPNETCORE_url=http://+:5000,而不是ENV ASPNETCORE_url=http://+5000