"panic: pgdriver: invalid scheme: lite" Die Anwendung geht direkt in den PostgreSQL-Treiber; DB_DRIVER wird nicht ausgewertet. Die MySQL-DSN (lite:pass@tcp(db:3306)/...) liest der Treiber als URI und findet als Schema den Benutzernamen. Der Fehler war meiner, und die Ursache lehrreich: ich hatte MySQL aus deren docker-compose.test.yml uebernommen, weil die als einzige zeigt, wie der App-Container verdrahtet wird. Sie benutzt aber fivemanage/lite:latest von Docker Hub — und diese Reihe steht bei beta.16 still. Das README sagt postgres://, und es hat recht. Ich habe der aelteren Datei mehr geglaubt als der Doku, weil sie konkreter aussah. Damit faellt auch die Behauptung, MySQL genuege und man koenne den vorhandenen QBox-Server mitbenutzen. Stimmt fuer diese Fassung nicht. Das Volume heisst jetzt pgdata statt db: wer den Stack schon mit MySQL laufen hatte, bekommt eine frische Ablage, statt dass PostgreSQL ueber ein MySQL-Verzeichnis stolpert. Das alte bleibt als Waise liegen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
92 lines
2.8 KiB
YAML
92 lines
2.8 KiB
YAML
# Zum Ausprobieren auf Docker Desktop.
|
|
#
|
|
# Der Unterschied zur Betriebsfassung ist Absicht und in beide Richtungen:
|
|
# hier sind die Ports offen und es gibt keinen Reverse Proxy, dort ist es
|
|
# umgekehrt. Eine `beta.23` gehoert erst auf einen Rechner, an dem nichts
|
|
# haengt — und wenn sie dort traegt, auf den Server.
|
|
#
|
|
# docker compose -f docker-compose.local.yml up -d
|
|
#
|
|
# Danach: http://localhost:8080 (admin / ADMIN_PASSWORD aus .env)
|
|
# http://localhost:9001 (MinIO, lite / MINIO_ROOT_PASSWORD)
|
|
|
|
services:
|
|
db:
|
|
image: postgres:16-alpine
|
|
environment:
|
|
POSTGRES_DB: fivemanage_lite
|
|
POSTGRES_USER: lite
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD:?bitte setzen}
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U lite -d fivemanage_lite"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
|
|
minio:
|
|
image: minio/minio:latest
|
|
command: server /data --console-address ":9001"
|
|
environment:
|
|
MINIO_ROOT_USER: lite
|
|
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:?bitte setzen}
|
|
# Oertlich: die Dateien liegen unter derselben Adresse, unter der MinIO
|
|
# antwortet. Erst auf dem Server tritt fivecdn.d4rkst3r.de an die Stelle.
|
|
MINIO_SERVER_URL: http://localhost:9000
|
|
ports:
|
|
- "9000:9000"
|
|
- "9001:9001"
|
|
volumes:
|
|
- minio:/data
|
|
healthcheck:
|
|
test: ["CMD", "mc", "ready", "local"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 20
|
|
|
|
minio-init:
|
|
image: minio/mc:latest
|
|
depends_on:
|
|
minio:
|
|
condition: service_healthy
|
|
environment:
|
|
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:?bitte setzen}
|
|
entrypoint: >
|
|
/bin/sh -c "
|
|
mc alias set local http://minio:9000 lite $$MINIO_ROOT_PASSWORD &&
|
|
mc mb --ignore-existing local/media &&
|
|
mc anonymous set download local/media &&
|
|
echo 'Bucket media ist bereit'
|
|
"
|
|
restart: "no"
|
|
|
|
lite:
|
|
# ghcr.io, NICHT Docker Hub: dort steht die Reihe bei 0.1.0-beta.16
|
|
# still, auf ghcr.io laeuft sie weiter. Die Test-Compose des Projekts
|
|
# zeigt `fivemanage/lite:latest` — das ist Docker Hub und damit alt.
|
|
image: ghcr.io/fivemanage/lite:0.1.0-beta.23
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
minio:
|
|
condition: service_healthy
|
|
environment:
|
|
PORT: "8080"
|
|
ENV: dev
|
|
DSN: postgres://lite:${DB_PASSWORD:?bitte setzen}@db:5432/fivemanage_lite?sslmode=disable
|
|
ADMIN_PASSWORD: ${ADMIN_PASSWORD:?bitte setzen}
|
|
API_TOKEN_HMAC_SECRET: ${API_TOKEN_HMAC_SECRET:?bitte setzen}
|
|
S3_PROVIDER: minio
|
|
AWS_ENDPOINT: http://minio:9000
|
|
AWS_ACCESS_KEY_ID: lite
|
|
AWS_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD:?bitte setzen}
|
|
AWS_BUCKET: media
|
|
AWS_REGION: auto
|
|
ports:
|
|
- "8080:8080"
|
|
|
|
volumes:
|
|
pgdata:
|
|
minio:
|