Da man beim einfachen Entwickeln nicht ein AWS S3-Bucket für die Entwickler bereit stellen möchte, kann man hier sehr gut MinIO verwenden. Es lässt sich schnell in docker-compose einbinden und die FileSystems von Shopware können den normalen S3-Adapter verwenden.
docker-compose.yml:
version: '3'
services:
shopware:
....
minio:
image: minio/minio:latest
volumes:
- minio_data1:/data
ports:
- "9000:9000"
environment:
MINIO_ACCESS_KEY: minio
MINIO_SECRET_KEY: minioKey123
command: server /data
networks:
- shopware-web
createbuckets:
image: minio/mc
depends_on:
- minio
entrypoint: >
/bin/sh -c "
/usr/bin/mc config host add myminio http://minio:9000 minio minioKey123;
/usr/bin/mc rm -r --force myminio/public;
/usr/bin/mc mb myminio/public;
/usr/bin/mc anonymous set public myminio/public;
exit 0;
"
networks:
- shopware-web
volumes:
minio_data1:
driver: local
networks:
shopware-web:
external: false
Nun kann man für einzelne der getrennten Dateisysteme das Bucket als Storage hinterlegen (config/packages/shopware.yaml):
shopware:
filesystem:
public:
type: "amazon-s3"
url: 'http://s3.local:9000/public'
config:
bucket: "public"
endpoint: "http://minio:9000"
use_path_style_endpoint: true
region: 'local'
credentials:
key: minio
secret: minioKey123
options:
visibility: "public"
theme:
type: "amazon-s3"
url: 'http://s3.local:9000/public'
config:
bucket: "public"
endpoint: "http://minio:9000"
use_path_style_endpoint: true
region: 'local'
credentials:
key: minio
secret: minioKey123
options:
visibility: "public"
cdn:
strategy: md5
Man kann auch getrennte Buckets nutzen, aber das macht an sich wenig Sinn.
Nun Cache leeren, Themes compilieren und die Medien einmal neu importieren oder auf in das Bucket kopieren.
Das kann man gut mit dem lokalen Client machen:
wget http://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin
mc config host add myminio http://localhost:9000 minio minioKey123
Die Dokumentation ist gewöhnungsbedürftig und ChatGPT liefert auch gerne veraltete Anleitungen.. aber mit etwas suchen klappt es dann doch recht gut.