gpt4 book ai didi

asp.net - Docker 中的 ASPNETCORE_ENVIRONMENT

转载 作者:IT老高 更新时间:2023-10-28 12:40:58 25 4
gpt4 key购买 nike

我在设置 ASPNETCORE_ENVIRONMENT 变量时遇到问题,该变量在 docker 容器 中运行我的项目。问题是该值总是设置/覆盖为“Development”

我尝试使用

在我的 Dockerfile 中设置环境变量
ENV ASPNETCORE_ENVIRONMENT test

还尝试使用

在我的 docker-compose 文件中设置环境变量
environment:
- ASPNETCORE_ENVIRONMENT=test

当我设置任何其他环境变量时它可以工作,例如:

environment:
- OTHER_TEST_VARIABLE=test

我假设 ASPNETCORE_ENVIRONMENT 变量的值在某处被覆盖,但我很难找出在哪里。

我已将 Docker 支持添加到现有项目中,并通过 Visual Studio 的 Docker/Docker 组合选项直接运行该项目

项目在 Asp Net Core 2.1 上运行

提前致谢

我的launchSettings.json:

{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:53183/",
"sslPort": 0
}
},
"profiles": {

"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://localhost:{ServicePort}/api/values"

}

}
}

我也尝试将环境变量配置添加到launchSettings.json

"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://localhost:{ServicePort}/api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "test"
}
}

我的网站主机:

 public static IWebHost BuildWebHost(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((builderContext,config) =>
{
config.AddEnvironmentVariables();
})
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
logging.AddDebug();
})
.UseStartup<Startup>()
.Build();

}

我的 docker-compose.yml

version: '3.4'

services:
api:
image: ${DOCKER_REGISTRY}api
build:
context: .
dockerfile: API/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=test

我的 Dockerfile:

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base

WORKDIR /app
EXPOSE 80
FROM microsoft/dotnet:2.1-sdk 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

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

FROM base AS final
WORKDIR /app
COPY --from=publish /app .


ENTRYPOINT ["dotnet", "API.dll"]

这里是容器中的环境变量列表

C:\Users\Administrator>docker exec -ti d6 /bin/bash
root@d6f26d2ed2c3:/app# printenv
HOSTNAME=d6f26d2ed2c3
ASPNETCORE_URLS=http://+:80
test1=asdasd
test2=dasdasd
test3=dasdasd
PWD=/app
HOME=/root
NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages
DOTNET_USE_POLLING_FILE_WATCHER=1
ASPNETCORE_VERSION=2.1.3
DOTNET_RUNNING_IN_CONTAINER=true
TERM=xterm
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ASPNETCORE_ENVIRONMENT=Development
_=/usr/bin/printenv
root@d6f26d2ed2c3:/app#

最佳答案

它适用于我通过使用命令 dotnet CoreDocker.dll --environment="X" 配置 ASPNETCORE_ENVIRONMENT

尝试更改 dockerfile 如下:

ENTRYPOINT ["dotnet", "CoreDocker.dll", "--environment=X"]

关于asp.net - Docker 中的 ASPNETCORE_ENVIRONMENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52376855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com