arr*_*d09 5 environment-variables docker asp.net-core
我正在尝试让我的 asp.net 核心应用程序使用 ASPNETCORE_URLS 来设置启动 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();
}
Run Code Online (Sandbox Code Playgroud)
dockerfile 中的环境变量:
ENV ASPNETCORE_URLS=http://+:5000
Run Code Online (Sandbox Code Playgroud)
码头工人文件:
#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"]
Run Code Online (Sandbox Code Playgroud)
应用程序检测到环境变量,只是出于某种原因不会使用它。
提前致谢!
这是将ENV关键字DOCKERFILE
移动到应用程序图像以产生效果的常见误解
FROM base AS final
WORKDIR /app
ENV ASPNETCORE_URLS=http://+:5000
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Platform.API.dll"]
Run Code Online (Sandbox Code Playgroud)
ENV根据dockerfile 参考,关键字适用于当前构建阶段
ENV 指令将环境变量设置为 value 。此值将在构建阶段的所有后续指令的环境中,并且也可以在许多中内联替换。
FROM 然而开始一个新的构建阶段
FROM 指令初始化一个新的构建阶段并为后续指令设置基础镜像。因此,有效的 Dockerfile 必须以 FROM 指令开头。
你可以通过构建这个来尝试这个 DOCKERFILE
from alpine
ENV asdf test
RUN echo $asdf
from alpine
RUN echo $asdf
Run Code Online (Sandbox Code Playgroud)
返回
$ 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7202 次 |
| 最近记录: |