Docker/Portainer部署email2pdf时,WKHTMLTOPDF_OPTIONS配置报错求助
解决email2pdf项目中WKHTMLTOPDF_OPTIONS环境变量配置问题
问题根源
你的核心问题是YAML解析规则与JSON格式的冲突:
- 直接写
WKHTMLTOPDF_OPTIONS: {"load-media-error-handling":"ignore"}时,YAML会将大括号解析为映射结构,但环境变量要求值为字符串/数字等基础类型,因此触发类型错误。 - 用单引号包裹后出现YAML语法错误,是因为数组式环境变量的解析规则对单引号的处理存在兼容性问题(尤其是Portainer的YAML解析器),最终导致传递给容器的JSON字符串格式无效,触发
JSONDecodeError。
正确配置方案
方案1:调整docker-compose.yml的环境变量写法
将数组式环境变量改为映射式(更稳定,YAML解析逻辑更清晰),同时确保JSON字符串格式正确:
version: "3.8" services: email2pdf: image: ghcr.io/rob-luke/emails-html-to-pdf:latest restart: always container_name: email2pdf environment: IMAP_URL: imap.gmx.net IMAP_USERNAME: example.gmx.net IMAP_PASSWORD: 12345 IMAP_FOLDER: Inbox SMTP_URL: mail.gmx.net MAIL_SENDER: Example.gmx.net MAIL_DESTINATION: Example.gmx.net INTER_RUN_INTERVAL: 60 HOSTS: "127.0.0.1 tracking.paypal.com" WKHTMLTOPDF_OPTIONS: '{"enable-local-file-access":"true","load-media-error-handling":"ignore"}'
如果坚持使用数组式写法,需转义内部双引号:
# 数组式写法示例 environment: - IMAP_URL=imap.gmx.net # ... 其他变量省略 - WKHTMLTOPDF_OPTIONS="{\"enable-local-file-access\":\"true\",\"load-media-error-handling\":\"ignore\"}"
方案2:Portainer Web界面直接配置
如果是在Portainer中手动添加环境变量,无需添加任何引号,直接输入:
- 键:
WKHTMLTOPDF_OPTIONS - 值:
{"enable-local-file-access":"true","load-media-error-handling":"ignore"}
验证配置有效性
部署完成后,可进入容器检查环境变量是否正确传递:
docker exec -it email2pdf echo $WKHTMLTOPDF_OPTIONS
输出应为完整的JSON字符串,无多余引号或转义错误。
内容的提问来源于stack exchange,提问作者nikiloe
相关产品推荐
相关产品推荐

