pwaldhauer/browsershot-aio

一键式Docker容器,用于运行Browsershot

v0.1 2023-06-08 13:13 UTC

This package is auto-updated.

Last update: 2024-09-08 16:11:09 UTC


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