【发布时间】: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_ENVIRONMENTenv 变量在每个环境中控制它们。
标签: c# .net docker asp.net-core .net-core