WkHtmlToPdf-DotNet Docker 容器:libgdiplus.so 没有这样的文件或目录

问题描述 投票:0回答:1

https://github.com/HakanL/WkHtmlToPdf-DotNet?tab=readme-ov-file 我看到代码使用 Docker 容器(我在 MacBook 项目 C# .NET Core 中工作项目)

Docker 如果您使用微软提供的 Linux 版本的 docker 容器 for net core,则需要安装几个库。

以下示例适用于基于 debian 的 Linux 发行版;

在 WORKDIR /app 命令之前插入以下行

运行apt更新 运行 apt install -y libgdiplus 运行 ln -s /usr/lib/libgdiplus.so /lib/x86_64-linux-gnu/libgdiplus.so 运行 apt-get install -y --no-install-recommends zlib1g fontconfig libfreetype6 libx11-6 libxext6 libxrender1 wget gdebi 运行 wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.stretch_amd64.deb 运行 gdebi --n wkhtmltox_0.12.5-1.stretch_amd64.deb 运行 apt install libssl1.1 运行 ln -s /usr/local/lib/libwkhtmltox.so /usr/lib/libwkhtmltox.so

我插入 DockerFile。

我进入我的项目并出现错误 显示:


[ticketservice.api 基础 4/10] RUN ln -s /usr/lib/libgdiplus.so /lib/x86_64-linux-gnu/libgdiplus.so: 0.179 ln:无法创建符号链接'/lib/x86_64-linux-gnu/libgdiplus.so':没有这样的文件或目录


无法解决:进程“/bin/sh -c ln -s /usr/lib/libgdiplus.so /lib/x86_64-linux-gnu/libgdiplus.so”未成功完成:退出代码:1

“libgdiplus.so”找不到,我该如何修复它?

我想使用 NugetPackage Haukcode.WkHtmlToPdfDotNet。在 C# .NET Core 中

c# asp.net macos dockerfile
1个回答
0
投票

花了一个早上的大部分时间试图解决这个问题。我的情况和你一样,我在 MacBook 上构建这个,它确实可以在 Windows 和 Linux 上运行。

Libgdiplus install 查找您的机器系统,然后根据该系统安装操作系统 (Libgdiplus)

当您运行以下命令并查看 Docker Desktop 中的日志时,您可以看到 docker 文件正在安装不同的文件

RUN ls -d1 /lib/**/*

Docker 有一个解决方案,您可以指定构建的平台(就像您使用多个操作系统一样,这可能会导致奇怪的事情)请参阅链接了解更多Docker 多平台

要使其正常工作,您需要在运行文件时在构建命令中指定平台。我使用 linux amd64,这对我有用

--platform linux/amd64

希望这能解决您的问题

© www.soinside.com 2019 - 2024. All rights reserved.