Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Für die Verwendung von Puppeteer zum Rendern von mehrseitigen HTML-Dokumenten wurde ein Runtime-Image bereitgestellt:

registry.brandbox.host/brandbox-product/runtime/puppeteer:latest1.0.0

Enthaltene Software

Software

Version

Debian

10

Node.js

14.21.3

Konfiguration für docker-compose.yml

Das Image kann in einer docker-compose.yml wie folgt eingebunden werden:

Codeblock
languageyml
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" aliases:
       traefik.docker.network: traefik_webgateway       traefik.frontend.rule: "Host:puppeteer.$COMPOSE- puppeteer.${COMPOSE_PROJECT_NAME.local.brandbox.de"}
    labels:
 traefik.port: 8080     ports:
      -traefik.enable: "9000false"
    exposeports:
      - "8080"

Die Umgebungsvariablen PUPPETEER_HOST und PUPPETEER_PROTOCOL müssen wie folgt befüllt werden (brandbox.docker.env):

Umgebungsvariable

Wert

PUPPETEER_HOST

puppeteer.$COMPOSE${COMPOSE_PROJECT_NAME.local.brandbox.de  (wie in }:8080

Info

Die Definition dieser Umgebungsvariable sollte über die docker-compose.yml

definiert)

vorgenommen werden.

PUPPETEER_PROTOCOL PROTOCOL

httpshttp

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 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[HOSTNAME]:8080/puppeteer?source=[SOURCE]&target=[TARGET]

Parameter (GET)

Bezeichnung

Beschreibung

source

Das zu rendernde verarbeitende HTML-Dokument,

per Datei-Pfad auf ein Shared Volume, z.B. "

. Die Angabe erfolgt als URL und kann entweder ein Dateifpad oder eine Webadresse darstellen.

  1. Dateipfad (bspw. in einem eingehangenen Volume): file:///var/www/share/private/

normal
  1. document.html

"oder eine URL, unter der das HTML-Dokument erreichbar ist
  1. Webadresse: https://[HOSTNAME]/something/something.html?optional=parameter

target

Ein Datei-Pfad Ordnerpfad für die Ablage des erstellten mehrseitigen Dokumentsverarbeiteten HTML-Dokuments. Es wird immer ein Gesamtdokument sowie die Einzelseiten abgelegt.

timeout

Status
colourBlue
titleOptional

Die Anzahl an Millisekunden, die der Renderprozess Verarbeitungsprozess auf eine Reaktion wartet. Standardmäßig wird hier 60000 60.000 für 60 Sekunden gesetzt

abort

Dieses Argument muss entweder weggelassen oder gesetzt werden. Falls gesetzt, wird der Render-Prozess .

request

Status
colourBlue
titleOPTIONAL

Die Anzahl an Millisekunden, die der Verarbeitungsprozess auf das Quelldokument (source-Parameter) wartet. Standardmäßig wird hier 30.000 für 30 Sekunden gesetzt.

abort

Status
colourBlue
titleOPTIONAL

Wird dieser Parameter definiert und enthält den Wert 1, wird der Verarbeitungsprozess bei einem Fehler sofort abgebrochen, falls es nicht gesetzt wurde, . Andernfalls werden Fehlermeldungen zwar protokolliert aber übergangen.

Rückgabewerte (JSON)

Bezeichnung

Beschreibung

result

Im Erfolgsfall true für erfolgreiche Konvertierung, andernfalls false im Fehlerfall

log

Die Konsolen-Ausgabe von Puppeteer

Beispiel

...

.

log

Eine Zusammenfassung des Verabeitungsprozesses sowie Zusatzinformationen für eine Protokollierung. Diese Information wird als JSON-Objekt übergeben.

source

Die im source-Parameter übergebene URL zum Quelldokument.

target

Der im target-Parameter übergebene Ordnerpfad für die Ablage der verareiteten Dokumente.

requests

Die innerhalb des Verarbeitungsprozesses ausgeführten HTTP-Anfragen und deren Ergebnisse (Status oder Fehlertext).

messages

Die innerhalb des Verarbeitungsprozesses eingesammelten Logmeldungen sowie deren Typ.

duration

Laufzeit des Verarbeitungsprozesses in Sekunden.

additional

Zusatzinformationen aus der Anfrage oder dem Verarbeitungsprozess.

Beispiel

Codeblock
languagejs
// GET http://[HOSTNAME]:8080/puppeteer?source=https%3A%2F%2Fexample.com%2Fsomething%2Fsomething.html&target=%2Fvar%2Fwww%2Fshare%2Fprivate%2Fexample

{
	"result": true,
	"log": [{
		"file:///var/www/normal.html",
		"file:///var/www/normal.html 200",
		"source": "https://example.brandbox.decom/temp/public/framework/fractal/rendered/print-styleguide.csssomething/something.html",
		"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.pdftarget": "/var/www/share/private/example",
		"https://example.brandbox.de/?request=Fractal/Fractal.image&filename=share/public/client-1/domain-1/Testbilder/konmedia_logo.eps",requests": {
			"https://example.brandbox.decom/temp/public/framework/fractal/js/print-document.js",
something/something.html": 200,
			"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"com/style.css": 200,
			// ...
		},
		"messages"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)"
	]: {
			{
				"type": "info",
				"text": "[document] waiting for document"
			},
			{
				"type": "info",
				"text": "[document] creating page 1"
			},
			// ...
			{
				"type": "info",
				"text": "[document] finished document"
			},
			// ...
		},
		"duration": 37.4,
		"additional": {/* ... */},
	}
}