为了账号安全,请及时绑定邮箱和手机立即绑定

将特定的 JRE 添加到 .Net Dockerfile

将特定的 JRE 添加到 .Net Dockerfile

跃然一笑 2023-05-10 13:34:15
我正在设置一个 .net Docker 映像,其中包含一些 .net 代码。然而,该代码需要访问非常特定版本的 Java 运行时 ( jre-7u9-windowsx64.exe)。我不知道从哪里开始将这个可执行文件添加到我的 dotnet Dockerfile 中。dotnet 的当前 DockerfileFROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-envWORKDIR /name# Copy csproj and restore as distinct layersCOPY *.csproj ./RUN dotnet restore# Copy everything else and buildCOPY . ./RUN dotnet publish -c Release -o out# Build runtime imageFROM mcr.microsoft.com/dotnet/core/aspnet:2.2WORKDIR /appCOPY --from=build-env /app/out .ENTRYPOINT ["dotnet", "name.dll"]我只想将 JRE 添加到 Dockerfile,以便在 Docker 启动时安装或可用。
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

因为 JRE 构成了运行时环境的一部分,所以您需要将它安装到您的# Build runtime image.

您的理想目标是找到足以同时运行 ASP.NET 和您的 .NET 代码以及 JRE 和您的 Java 代码的最小公倍数。

选项 #1:查找同时运行 ASP.NET 和 JRE 的(受信任的)容器映像

据推测,您已经采用了这种方法但没有成功。

选项 #1:从您当前工作的解决方案开始并添加

我不熟悉mcr.microsoft.com/dotnet/core/aspnet,但这可能足以作为您的基线,并且它的优势在于您知道它将运行您的 .NET 应用程序。

因此,您的过程将是确定您还需要安装什么(如果有的话)才能运行jre-7u9-windowsx64.exe

确定这一点的一种 hacky 方法是插入此二进制文件的任何安装程序(第 13-14 行之间)。RUN这将采用jre-7u9-windowsx64.exe 安装程序的形式。然后,尝试构建您的容器并查看会出现什么错误。

一种更深思熟虑的方法是确定您是否需要安装额外的软件包来支持jre-7u9-windowx64.exe,如果需要,您将需要RUN ...预先安装那些(使用进一步的)命令。

选项 #2:从最小基线开始并添加

或者,您可以从更基础的基线开始。我假设这里的操作系统是 Windows 而不是 Linux。大概有一个最小的 Windows 容器映像?

然后你需要添加任何需要的东西:

  • 让 ASP.NET 和您的 .NET 代码正常工作

  • 让 JRE 和您的 Java 代码正常工作

这将为您的图像提供更深思熟虑的基础,但代价是要求您解决两个难题。

选项 #3:从工作的 JRE 映像开始并添加

为了完整性而包括在内,但在这种情况下不推荐。


查看完整回答
反对 回复 2023-05-10
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信