Für die Verwendung von Puppeteer zum Rendern von mehrseitigen HTML-Dokumenten wurde ein Runtime-Image bereitgestellt:
registry.brandbox.host/brandbox-product/runtime/puppeteer:latest
Enthaltene Software
Software | Version |
---|---|
Debian | 10 |
Node.js | 14.21.3 |
Konfiguration für docker-compose
Das Image kann in einer docker-compose.yml wie folgt eingebunden werden:
puppeteer: image: registry.brandbox.host/runtime/puppeteer:1.0.0 hostname: $COMPOSE_PROJECT_NAME domainname: local.brandbox.de volumes: - /mnt/nfsstorage/${COMPOSE_PROJECT_NAME}/temp:/var/www/temp/ - /mnt/nfsstorage/${COMPOSE_PROJECT_NAME}/share:/var/www/share/ env_file: - brandbox.docker.env working_dir: /var/www networks: - internal - proxy labels: traefik.enable: "true" traefik.backend.loadbalancer.method: "drr" traefik.docker.network: traefik_webgateway traefik.frontend.rule: "Host:puppeteer.$COMPOSE_PROJECT_NAME.local.brandbox.de" traefik.port: 8080 ports: - "9000" expose: - "8080"
Die Umgebungsvariablen PUPPETEER_HOST und PUPPETEER_PROTOCOL müssen wie folgt befüllt werden (brandbox.docker.env):
Umgebungsvariable | Wert |
---|---|
PUPPETEER_HOST | puppeteer.$COMPOSE_PROJECT_NAME.local.brandbox.de (wie in docker-compose.yml definiert) |
PUPPETEER_PROTOCOL | https |
Cluster-Konfiguration (Kubernetes)
Es muss ein Deployment mit dem Image registry.brandbox.host/runtime/puppeteer:1.0.0 eingerichtet werden
Es muss ein Service mit dem Namen service-puppeteer eingerichtet werden, der auf dieses Deployment verweist
Die Umgebungsvariablen PUPPETEER_HOST und PUPPETEER_PROTOCOL müssen wie folgt befüllt werden
Umgebungsvariable | Wert |
---|---|
PUPPETEER_HOST | service-puppeteer:8080 |
PUPPETEER_PROTOCOL | http |
Diese Standardwerte existieren bereits im Rancher-Manager und werden beim Redeploy über die Gitlab-Pipeline automatisch gesetzt.
Verwendung
Das Image stellt eine einfache Rest-Schnittstelle bereit, mit der HTML-Dokumente an Puppeteer übergeben werden können:
https://service-url/puppeteer?source=SOURCE&target=TARGET
Parameter (GET)
Bezeichnung | Beschreibung |
---|---|
source | Das zu rendernde HTML-Dokument,
|
target | Ein Datei-Pfad für die Ablage des erstellten mehrseitigen Dokuments |
timeout | Die Anzahl an Millisekunden, die der Renderprozess auf eine Reaktion wartet. Standardmäßig wird hier 60000 für 60 Sekunden gesetzt |
abort | Dieses Argument muss entweder weggelassen oder gesetzt werden. Falls gesetzt, wird der Render-Prozess bei einem Fehler sofort abgebrochen, falls es nicht gesetzt wurde, werden Fehlermeldungen zwar protokolliert aber übergangen. |
Rückgabewerte (JSON)
Bezeichnung | Beschreibung |
---|---|
result | true für erfolgreiche Konvertierung, false im Fehlerfall |
log | Die Konsolen-Ausgabe von Puppeteer |
Beispiel
{ "result": true, "log": [ "file:///var/www/normal.html", "file:///var/www/normal.html 200", "https://example.brandbox.de/temp/public/framework/fractal/rendered/print-styleguide.css", "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/16126a.tif", "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/brandbox_logo.eps", "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/example.pdf", "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/konmedia_logo.eps", "https://example.brandbox.de/temp/public/framework/fractal/js/print-document.js", "https://example.brandbox.de/temp/public/framework/fractal/rendered/print-styleguide.css 200", "https://example.brandbox.de/temp/public/framework/fractal/js/print-document.js 200", "https://example.brandbox.de/temp/public/framework/fractal/fonts/roboto-normal-400.woff2", "https://example.brandbox.de/temp/public/framework/fractal/fonts/roboto-normal-700.woff2", "https://example.brandbox.de/temp/public/framework/fractal/js/print-element.js", "https://example.brandbox.de/temp/public/framework/fractal/fonts/roboto-normal-400.woff2 200", "https://example.brandbox.de/temp/public/framework/fractal/fonts/roboto-normal-700.woff2 200", "https://example.brandbox.de/temp/public/framework/fractal/js/print-element.js 200", "https://example.brandbox.de/temp/public/framework/fractal/js/print-table.js", "https://example.brandbox.de/temp/public/framework/fractal/js/print-table.js 200", "https://example.brandbox.de/temp/public/framework/fractal/js/print-paragraph.js", "https://example.brandbox.de/temp/public/framework/fractal/js/print-paragraph.js 200", "https://example.brandbox.de/temp/public/framework/fractal/js/print-page.js", "https://example.brandbox.de/temp/public/framework/fractal/js/print-page.js 200", "Created 1 pages", "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/konmedia_logo.eps 200", "Created 2 pages", "https://example.brandbox.de?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/brandbox_logo.eps 200", "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/16126a.tif 200", "https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/example.pdf 200", "Created 3 pages", "Created 4 pages", "Created 5 pages", "Created 6 pages", "Created 7 pages", "Created 8 pages", "Created 9 pages", "Created 10 pages", "Created 11 pages", "Document processing took 3.323 seconds", "Finished in 3.558 seconds (11 pages)" ] }