生产环境使用wkhtmltopdf时出现Invalid platform错误
解决Alpine镜像下wicked-pdf依赖wkhtmltopdf不兼容问题
错误原因
wkhtmltopdf-binary gem未提供Alpine Linux对应的预编译二进制文件,当gem检测到当前运行环境为Alpine时,就会抛出平台不支持的错误。
解决方案
方案1:切换为Ubuntu-based Ruby镜像
直接替换Docker镜像为Ubuntu版本,和你的服务器系统(ubuntu-20.04)保持一致,完全适配wkhtmltopdf-binary支持的平台:
FROM ruby:2.7.1-ubuntu-20.04 # 后续构建步骤不变
方案2:在Alpine镜像中手动安装系统版wkhtmltopdf
放弃使用gem自带的二进制文件,改用Alpine包管理器安装的wkhtmltopdf:
- 在Dockerfile中添加依赖安装命令:
RUN apk add --no-cache wkhtmltopdf libx11 libxrender libxext libssl1.1 ca-certificates - 在Rails初始化文件中指定系统wkhtmltopdf的路径:
# config/initializers/wicked_pdf.rb WickedPdf.config = { exe_path: '/usr/bin/wkhtmltopdf' }
方案3:使用Alpine兼容的wkhtmltopdf二进制gem
替换Gemfile中的wkhtmltopdf-binary为专门支持Alpine的版本:
# Gemfile # 移除 gem 'wkhtmltopdf-binary' gem 'wkhtmltopdf-binary-alpine'
然后执行bundle install更新依赖。
内容的提问来源于stack exchange,提问作者scrscr87
相关产品推荐
相关产品推荐

