munin/docker-compose.dev.yml

47 lines
1.8 KiB
YAML

# PostgreSQL für die lokale Entwicklung — siehe AUSBAUSTUFEN.md 4.10.
#
# Nur für die Entwicklung gedacht: feste, schwache Zugangsdaten, Port offen
# auf localhost. Für den Betrieb ungeeignet.
#
# docker compose -f docker-compose.dev.yml up -d # starten
# docker compose -f docker-compose.dev.yml down # stoppen (Daten bleiben)
# docker compose -f docker-compose.dev.yml down -v # stoppen und Daten löschen
#
# Munin damit starten:
# DB_DRIVER=postgres \
# DATABASE_URL='postgres://munin:munin@localhost:5432/munin?sslmode=disable' \
# go run .
#
# Tests gegen PostgreSQL (eigene Datenbank munin_test). Store, Export und
# Import laufen dann gegen PostgreSQL, alles andere wie immer gegen SQLite:
# MUNIN_TEST_PG='postgres://munin:munin@localhost:5432/munin_test?sslmode=disable' \
# go test ./...
services:
postgres:
image: postgres:18
# Munin braucht je Workspace bis zu 3 Verbindungen (siehe
# internal/store/speicher_postgres.go). 200 reichen für rund 60 Workspaces.
command: postgres -c max_connections=200
environment:
POSTGRES_USER: munin
POSTGRES_PASSWORD: munin
POSTGRES_DB: munin
# Sortierung "C": Text wird Byte für Byte sortiert, genau wie in SQLite.
# Ohne das stünde z.B. "a-c" vor "ab". Wirkt nur beim allerersten Start
# (leeres Volume).
POSTGRES_INITDB_ARGS: "--locale=C --encoding=UTF8"
ports:
- "127.0.0.1:5432:5432"
volumes:
- munin-pgdata:/var/lib/postgresql
# Legt beim allerersten Start die Datenbank munin_test für die Tests an.
- ./scripts/postgres-dev-init.sql:/docker-entrypoint-initdb.d/munin-init.sql:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready -U munin -d munin"]
interval: 2s
timeout: 3s
retries: 15
volumes:
munin-pgdata: