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
435 B
YAML
12 lines
435 B
YAML
async_aws:
|
|
clients:
|
|
card_assets:
|
|
type: s3
|
|
config:
|
|
region: '%env(S3_REGION)%'
|
|
endpoint: '%env(S3_ENDPOINT)%'
|
|
# Path-Style für MinIO (true). Hetzner Object Storage funktioniert auch mit true.
|
|
pathStyleEndpoint: '%env(bool:S3_PATH_STYLE)%'
|
|
accessKeyId: '%env(S3_KEY)%'
|
|
accessKeySecret: '%env(S3_SECRET)%'
|