pwaldhauer / browsershot-aio
一键式Docker容器,用于运行Browsershot
v0.1
2023-06-08 13:13 UTC
Requires
- php: ^8.0
- spatie/browsershot: ^3.52
README
这是一个两件事的组合
- 基于alpine-chrome的Docker镜像,包括一个简单的Express服务器,该服务器执行由Spatie的Browsershot库生成的命令
- 一个简单的PHP包装器,它通过调用Express服务器来扩展原始的Browsershot库,而不是使用Node调用Puppeteer
为什么?
- 我不想在我的主PHP应用程序镜像中包含Node和Puppeteer
- 我不想使用
remoteInstance
的所有麻烦 - 我不想使用sidecar-browsershot库的Lambda函数(相反,我受到了它的影响。)
注意
很可能Browsershot的一半功能都不起作用。我只测试了简单的PDF生成。此外,Express服务器没有认证。我不会推荐在生产环境中使用此工具。
运行
更多信息请参阅alpine-chrome的README
docker container run -p 3000:3000 -it --rm --cap-add=SYS_ADMIN ghcr.io/pwaldhauer/browsershot-aio
或者在docker-compose.yml中使用类似的内容
chrome: image: ghcr.io/pwaldhauer/browsershot-aio restart: unless-stopped cap_add: - SYS_ADMIN
在PHP中使用
像使用Browsershot
一样使用它,但将其替换为BrowsershotAio
。请确保设置到Express服务器的url
use pwaio\BrowsershotAio\BrowsershotAio; BrowsershotAio::setEndpoint('http://chrome:3000'); // if you do not want to create a shared volume for your containers $data = BrowsershotAio::url('https://example.com')->base64Screenshot(); // an image will be saved (needs a shared volume) BrowsershotAio::url('https://example.com')->save($pathToImage); // a pdf will be saved (needs a shared volume) BrowsershotAio::url('https://example.com')->save('example.pdf');
许可证
MIT