diff --git a/pdns/docker-compose-traefik.yml b/pdns/docker-compose-traefik.yml index 9ef3ac8..262335a 100644 --- a/pdns/docker-compose-traefik.yml +++ b/pdns/docker-compose-traefik.yml @@ -25,32 +25,24 @@ services: set -eu mkdir -p /etc/powerdns/pdns.d - # Versuche Verzeichnis-Rechte zu setzen, ignoriere Fehler (Operation not permitted) - chmod 777 /data || echo "Could not change /data permissions, hoping for the best..." - PDNS_BIN=$$(which pdns_server || echo "/usr/local/sbin/pdns_server") DB_FILE="$${PDNS_GSQLITE3_DATABASE}" - if [ "$${PDNS_LAUNCH}" = "gsqlite3" ] && [ ! -f "$$DB_FILE" ]; then - echo "Initialisierung der Datenbank in $$DB_FILE" + # 1. Vorbereitung als Root + if [ ! -f "$$DB_FILE" ]; then + echo "Initialisiere SQLite als root..." + touch "$$DB_FILE" + # Wir finden heraus, welcher User pdns normalerweise gehört (meist pdns) + # und geben ihm die Datei. Falls der User nicht existiert, nutzen wir 666. + chmod 666 "$$DB_FILE" - # Wir versuchen die Datei direkt zu erzeugen - # Wenn das fehlschlägt, liegt es am Host-Mount - if touch "$$DB_FILE" 2>/dev/null; then - chmod 666 "$$DB_FILE" - # Schema suchen - SCHEMA=$$(find /usr -name schema.sqlite3.sql | head -n 1) - if [ -n "$$SCHEMA" ]; then - sqlite3 "$$DB_FILE" < "$$SCHEMA" - echo "Schema erfolgreich importiert." - fi - else - echo "FATAL: Keine Schreibrechte in /data. Bitte auf dem Host 'chmod 777' auf das Verzeichnis ausführen!" - exit 1 + SCHEMA=$$(find /usr -name schema.sqlite3.sql | head -n 1) + if [ -n "$$SCHEMA" ]; then + sqlite3 "$$DB_FILE" < "$$SCHEMA" fi fi - # Config schreiben + # 2. Config schreiben cat > /etc/powerdns/pdns.d/99-env.conf <