【问题标题】:How to run .net core application with launch profile via docker如何通过 docker 使用启动配置文件运行 .net 核心应用程序
【发布时间】:2019-08-13 16:03:12
【问题描述】:

我正在使用 Docker 将我的 ASP.NET Core 应用程序部署到 Linux 机器上。 我有一个非常默认的 Dockerfile,如下所示:

FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM microsoft/dotnet:aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

所以我的观点是能够使用launchsettings.json 中声明的不同设置和不同启动配置文件来构建和运行项目的不同实例。为此,我需要使用不同的 dockerfile,但有一个问题:如何设置启动配置文件?

Docker 使用ENTRYPOINT ["dotnet", "aspnetapp.dll"] 来启动应用程序(这似乎是正确的做法)。这个字符串意味着dotnet 命令将被执行,并且根据doumentation 似乎没有办法将启动配置文件作为参数传递。

是的,我知道dotnet run 命令允许通过--launch-profile <NAME> 传递它。但是docs 说不建议只使用dotnet run 并建议按照 Dockerfile 中的方式发布应用程序

在这里做什么是正确的?

谢谢!

【问题讨论】:

  • 也许更好的问题是:你想从启动设置中得到什么?您可以使用环境变量,也可以将所需的值放在appsettings 中,并使用ASPNETCORE_ENVIRONMENT env 变量在每个环境中控制它们。

标签: c# .net docker asp.net-core .net-core


【解决方案1】:

一种可能的方法是显式设置launchSettings 包含在Dockerfile 中的所有不同环境变量。 launchSettings.json里有environmentVariables以外的东西吗?

【讨论】:

  • 是的,我也有不同的applicationUrl
  • 您也可以通过 Dockerfile 中的环境变量进行设置
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-17
  • 2018-04-16
  • 2018-05-14
  • 2019-09-09
  • 1970-01-01
  • 2023-02-23
相关资源
最近更新 更多