基于alpine-chrome构建Docker镜像时print-to-pdf写入文件失败排查
Chrome生成PDF报错“无此文件或目录”的排查方案
可能原因及解决办法
1. 权限问题大概率是元凶
- 先查容器里
/tmp目录的权限:执行ls -ld /tmp查看权限位,要是当前运行Chrome的用户(比如非root用户)没读写权限,肯定写不了文件。 - 测试阶段可以先切换到root用户执行命令,或者临时给
/tmp开全局读写权限(chmod 777 /tmp,生产环境谨慎使用,测试后恢复原有权限)。
2. 命令里的引号坑了你
你写的--print-to-pdf='/tmp/test.pdf'带了单引号,shell会把带引号的整个字符串当成路径,Chrome就会去找'/tmp/test.pdf'(连引号一起),自然找不到目标路径。直接改成--print-to-pdf=/tmp/test.pdf即可。
3. /tmp目录本身有问题
- 先确认容器里
/tmp存在:执行ls /tmp查看,要是目录都不存在,肯定没法写入文件。 - 要是启动容器时用
-v参数把本地目录挂载到了容器/tmp,得检查本地对应的目录是否存在、权限是否足够,否则容器里的/tmp相当于挂载了一个空的或不可写的目录。
4. 环境变量搞鬼
有时候Chrome运行时的TMPDIR环境变量被修改,导致它没往默认的/tmp目录写入。执行echo $TMPDIR查看这个变量指向的路径,确保对应的目录存在且可写。
内容的提问来源于stack exchange,提问作者Fred Hors
相关产品推荐
相关产品推荐

