我是Docker新手,在Docker中运行我的应用程序时遇到了问题,因为缺少ssl证书。如何在docker中使用开发人员证书在非开发环境下运行aspnetcore应用程序?
我有以下几点
Dockerfile
由Visual Studio生成:
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["MyApp/MyApp.csproj", "MyApp/"]
COPY [...other libraries...]
RUN dotnet restore "MyApp/MyApp.csproj"
COPY . .
WORKDIR "/src/MyApp"
RUN dotnet build "MyApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyApp.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
当我使用默认设置(开发)从VisualStudio运行它时,它连接Docker,一切正常。但是,我想使用不同的appsettings文件(
appsettings.docker.json
)因为我在Docker中运行时需要一些不同的值,而且我已经在使用我的
appsettings.development.json
为我的标准运行从VS。因此,我设置
ASPNETCORE_ENVIRONMENT=Docker
.这让我很痛苦,因为我突然得了感冒
InvalidOperationException
:
System.InvalidOperationException: Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found or is out of date.
To generate a developer certificate run 'dotnet dev-certs https'. To trust the certificate (Windows and macOS only) run 'dotnet dev-certs https --trust'.
基于
this
答案是,我发现当环境变量为
Development
.对于一个不同的环境,如何解决这个问题?
我确实试过使用
dotnet dev-certs https
但是,Dockerfile中的命令生成失败,因为映像中没有sdk,因此不知道该命令。