From 2e875ed1ad7989bd6dbc695f0a720d25f00b36e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhard=20X=2E=20F=C3=BCrst?= Date: Fri, 5 Jun 2026 13:54:43 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20backup=20=E2=80=94=20mariadb-dump,=20--s?= =?UTF-8?q?kip-ssl,=20SSH-Key=20per=20Volume=20in=20Compose?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - mariadb-dump statt mysqldump (kein Deprecation-Warning in Alpine) via BACKUP_DUMP_CMD konfigurierbar (Fallback für lokale MySQL-Umgebung) - --skip-ssl unterdrückt MariaDB-SSL-Warnung bei MYSQL_PWD-Nutzung - docker-compose.prod.yml: BACKUP_SSH_URL + Key-Volume (BACKUP_SSH_KEY_FILE) damit SSH-Alias-Auflösung und Key-Zugriff im Container funktionieren Co-Authored-By: Claude Sonnet 4.6 --- docker-compose.prod.yml | 4 ++++ lib/backup.ts | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index a775479..3f4bf14 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -48,6 +48,10 @@ services: DB_NAME: ${DB_NAME} AUTH_SECRET: ${AUTH_SECRET} NODE_ENV: production + BACKUP_SSH_URL: ${BACKUP_SSH_URL} + BACKUP_SSH_KEY_PATH: /run/secrets/backup_ssh_key + volumes: + - ${BACKUP_SSH_KEY_FILE}:/run/secrets/backup_ssh_key:ro ports: - "127.0.0.1:${APP_PORT:-3000}:3000" depends_on: diff --git a/lib/backup.ts b/lib/backup.ts index 0923e6e..0e6476f 100644 --- a/lib/backup.ts +++ b/lib/backup.ts @@ -34,9 +34,12 @@ async function runBackup(): Promise { '-o', 'BatchMode=yes', ]; + const dumpBin = process.env.BACKUP_DUMP_CMD || 'mariadb-dump'; + await new Promise((resolve, reject) => { - const dump = spawn('mysqldump', [ + const dump = spawn(dumpBin, [ `-h${dbHost}`, `-P${dbPort}`, `-u${dbUser}`, + '--skip-ssl', `--ignore-table=${dbName}.beos`, dbName, ], { env: { ...process.env, MYSQL_PWD: dbPass } });