Bei der Nutzung von DDEV in der lokalen Entwicklung kann man MinIO als lokale S3-Alternative einbinden.
Dazu legen wir eine separate docker compose
-Konfiguration unter .ddev/docker-compose.minio.yaml
an:
services:
minio:
container_name: ddev-${DDEV_SITENAME}-minio
image: quay.io/minio/minio:RELEASE.2024-04-06T05-26-02Z
user: 1000:1000
labels:
com.ddev.site-name: ${DDEV_SITENAME}
com.ddev.approot: ${DDEV_APPROOT}
environment:
- VIRTUAL_HOST=${DDEV_HOSTNAME}
- HTTP_EXPOSE=9001
- MINIO_ROOT_USER=minio_user
- MINIO_ROOT_PASSWORD=minio_pass
- MINIO_VOLUMES=/data/minio
volumes:
- ./.minio:/data/minio
command: server --console-address ":9001" --anonymous
minio-setup:
container_name: ddev-${DDEV_SITENAME}-minio-setup
image: quay.io/minio/mc:RELEASE.2024-03-30T15-29-52Z
restart: no
depends_on:
- minio
entrypoint: >
/bin/sh -c "
/usr/bin/mc alias set myserver http://minio:9000 minio_user minio_pass;
/usr/bin/mc mb --ignore-existing myserver/mybucket;
exit 0;
"
Als Speicherort ist in diesem Beispiel ./.minio
definiert, welches wir noch manuell anlegen sollten, da sonst der Docker-Dienst es (wahrscheinlich) unter Benutzer root
anlegen wird:
mkdir -p .ddev/.minio
Hier die Anmerkungen zu den wichtigsten Endpunkten:
- Diese Konfiguration funktioniert mit den entsprechend fixierten Versions-Tags.
- Die UI Console kann über
http://<ddev-setup>:9001/
aufgerufen werden, Benutzer und Passwort sind hier beispielhaft aufminio_user
undminio_pass
gesetzt, da hier Mindestanforderungen an die Länge erfüllt werden müssen für die Zugangsdaten. - Die Direktive
user: 1000:1000
ist hier beispielhaft für den ersten Linux-Benutzer zu sehen und sollte entsprechend angepasst werden, wenn die Instanz nicht mit demroot
-Benutzer laufen soll.
Zusätzlich dazu gibt es noch einen Dienst minio-setup
. Dieser startet als One-Shot und seine einzige Aufgabe ist es einen default-Bucket auf dem Server zu erzeugen, falls dieser noch nicht existiert. Damit muss der Entwickler keine manuellen Schritte für die Anlage erledigen.
Eine weitere Ergänzung könnte eine .gitignore
für den Datenspeicher sein, damit dieser nicht im Git auftaucht. Dazu legen wir eine .ddev/.minio/.gitignore
mit folgendem Inhalt an:
/*
!/.gitignore
Nach einem ddev start
sollte der entsprechende Dienst zur Verfügung stehen.