0
点赞
收藏
分享

微信扫一扫

Windows 容器镜像踩坑记录

金穗_ec4b 2024-04-29 阅读 14

dotnet后端

问题描述:

基于mcr.microsoft.com/dotnet/aspnet:6.0镜像撰写dockerfile编译.net core后端项目后运行容器出现类库不存在问题:

  1. 程序中使用了fastreport,而它需要调用gdiplus.dll类库

  2. 官方基础镜像基于nanoserver镜像制作,该镜像不支持使用gdiplus.dll类库,尝试复制gdiplus.dll到容器的C:\Windows\System32\无效。

  3. 在这里插入图片描述

相关资料:

  • dotnet-docker/documentation/scenarios/using-system-drawing-common.md at main · dotnet/dotnet-docker (github.com)

  • 使用基于 Windows 的 docker 映像时无法加载 DLL“gdiplus.dll” ·问题 #1098 ·dotnet/dotnet-docker (github.com)

  • Windows Nano 容器是否支持基于 MFC、GDI 的应用程序?- Microsoft 问答

解决办法:

使用mcr.microsoft.com/dotnet/aspnet:6.0-windowsservercore-ltsc2022作为运行容器的基础镜像。缺点:最终的镜像大小约4-5个G。

前端node基础镜像

问题1描述:

前端基于vben框架打造,vben项目中的某些依赖在使用nanoserver安装node的基础镜像中无法被还原,使用nanoserver镜像作为基础镜像制作node镜像后,在dockerfile中执行yarn install时报错如下(目前未能找到问题,应该是系统缺少某些类库):

在这里插入图片描述

解决办法:

使用mcr.microsoft.com/windows/servercore:ltsc2022作为基础镜像去撰写node镜像的dockerfile

问题2描述:

基于mcr.microsoft.com/windows/servercore:ltsc2022安装node后再还原项目依赖时报错如下:(报错的依赖源自于vben,最后发现还是系统中缺少某些类库造成的)

在这里插入图片描述

解决办法:

使用servercore作为基础镜像安装vc_redit.x64.exe后,再安装node

替代方案:将vcruntime140.dll库复制到容器的C:/Windows/System32/目录(测试可行,vcruntime140.dll在安装vc_redit.x64后生成)

前端nginx基础镜像

问题描述:

前端通过node打包编译后最终需要挂载到nginx上运行,为了缩小镜像大小尝试使用nanoserver作为基础镜像安装nginx,但发现安装后无法启动nginx,也不产生报错信息。经过查阅资料发现nanoserver仅支持64位的程序,而nginx提供的预编译 nginx Windows 二进制文件是 32 位的,如果您需要 64 位 Windows 二进制文件,您可以尝试按照 nginx官方文档 中所述自行编译它。

解决办法:

使用mcr.microsoft.com/windows/servercore:ltsc2022作为基础镜像去撰写nginx镜像的dockerfile

相关资料:

  • 如何在基于 Windows Nano Server 的容器中运行 nginx?- 服务器故障 (serverfault.com)
  • #1274 (nginx 无法在 Windows Nano Server 中启动) – nginx
  • 添加对 Nanoserver 的 32 位 x86 支持 ·问题 #118 ·microsoft/Windows-容器 (github.com)

nanoserver基础镜像的限制相关资料

  • 支持 MSVC redistributables 在 nanoserver 容器内下载 ·期号 #112 ·microsoft/Windows-容器 (github.com)

  • 如何在Windows NanoServer上安装vCredit?- Microsoft 问答

  • 如何在nanoserver中安装vc_redist ·问题 #40131 ·dotnet/运行时 (github.com)

举报

相关推荐

windows安装rabbitmq踩坑记录

错误踩坑记录

vue 踩坑记录

TabLayou踩坑记录

Docker踩坑记录

RabbitMq踩坑记录

flink 踩坑记录

0 条评论