Macht die App-Nodes zustandslos (horizontal skalierbar): Hintergrund-PDFs und Schriften liegen nicht mehr lokal, sondern im S3-kompatiblen Object Storage (Flysystem + async-aws). In der DB stehen Storage-Keys. - flysystem-bundle + async-aws (Storage "card_assets"), env-getrieben (S3_ENDPOINT/REGION/BUCKET/KEY/SECRET/PATH_STYLE) → lokal MinIO, prod Hetzner OS - CardAssetUploadController: Upload/Read/Delete über Storage; GET streamt PDF - CardPdfRenderer: liest Hintergrund (FPDI StreamReader) & Schriften (Temp-Datei) aus S3 - docker-compose: minio + minio-init (Bucket) + zweiter App-Node php2 (Profil scale-test) - app:render-card Command für den Cross-Node-Nachweis Verifiziert: Upload über Node 1 → identisches PDF-Render (51897 B, mit Hintergrund) auf Node 2, der nur DB + Object Storage liest. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
12 lines
456 B
YAML
12 lines
456 B
YAML
# https://github.com/thephpleague/flysystem-bundle
|
|
flysystem:
|
|
storages:
|
|
# Druck-Assets (Hintergrund-PDFs, Schriften) im S3-kompatiblen Object Storage.
|
|
# Lokal: MinIO. Prod: Hetzner Object Storage. Gleicher Code, andere Env.
|
|
card_assets.storage:
|
|
adapter: 'asyncaws'
|
|
options:
|
|
client: 'async_aws.client.card_assets'
|
|
bucket: '%env(S3_BUCKET)%'
|
|
prefix: 'cards'
|