From 7c2295adb72eb09b0dc8799db95740213e6d61d4 Mon Sep 17 00:00:00 2001 From: Martin Gruner Date: Tue, 11 Jun 2024 11:12:55 +0200 Subject: [PATCH] Switch to docker backup script that was added to the Zammad image. --- .env | 2 +- docker-compose.override-local.yml | 3 ++ docker-compose.yml | 21 ++++----- scripts/backup.sh | 74 ------------------------------- 4 files changed, 12 insertions(+), 88 deletions(-) delete mode 100755 scripts/backup.sh diff --git a/.env b/.env index c102001..5e9a6c8 100644 --- a/.env +++ b/.env @@ -15,7 +15,7 @@ # REDIS_VERSION=7.2.4-alpine # RESTART=always # Use a fixed version. You are responsible to update this to newer patch level versions yourself. -# VERSION=6.3.1 +# VERSION=6.3.1-38 # You can also use floating versions that will give you automatic updates: # VERSION=6.2 # all patchlevel updates # VERSION=6 # including minor updates diff --git a/docker-compose.override-local.yml b/docker-compose.override-local.yml index b42070b..ccd3a1c 100644 --- a/docker-compose.override-local.yml +++ b/docker-compose.override-local.yml @@ -3,6 +3,9 @@ version: '3.8' services: + zammad-backup: + image: zammad-local + zammad-init: image: zammad-local diff --git a/docker-compose.yml b/docker-compose.yml index 48dfe43..b4d927a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,6 +13,11 @@ x-shared: POSTGRESQL_OPTIONS: ${POSTGRESQL_OPTIONS:-?pool=50} POSTGRESQL_DB_CREATE: REDIS_URL: ${REDIS_URL:-redis://zammad-redis:6379} + # Backup settings + BACKUP_DIR: "${BACKUP_DIR:-/var/tmp/zammad}" + BACKUP_TIME: "${BACKUP_TIME:-03:00}" + HOLD_DAYS: "${HOLD_DAYS:-10}" + TZ: "${TZ:-Europe/Berlin}" # Allow passing in these variables via .env: AUTOWIZARD_JSON: AUTOWIZARD_RELATIVE_PATH: @@ -31,7 +36,7 @@ x-shared: ZAMMAD_SESSION_JOBS: ZAMMAD_PROCESS_SCHEDULED: ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS: - image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.3.1} + image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.3.1-38} restart: ${RESTART:-always} volumes: - zammad-storage:/opt/zammad/storage @@ -43,22 +48,12 @@ x-shared: services: zammad-backup: + <<: *zammad-service command: ["zammad-backup"] - depends_on: - - zammad-railsserver - - zammad-postgresql - entrypoint: /usr/local/bin/backup.sh - environment: - <<: *zammad-environment - BACKUP_TIME: "03:00" - HOLD_DAYS: "10" - TZ: Europe/Berlin - image: postgres:${POSTGRES_VERSION:-15.6-alpine} - restart: ${RESTART:-always} volumes: - zammad-backup:/var/tmp/zammad - zammad-storage:/opt/zammad/storage:ro - - ./scripts/backup.sh:/usr/local/bin/backup.sh:ro + user: 0:0 zammad-elasticsearch: image: bitnami/elasticsearch:${ELASTICSEARCH_VERSION:-8.12.2} diff --git a/scripts/backup.sh b/scripts/backup.sh deleted file mode 100755 index e0bf4a2..0000000 --- a/scripts/backup.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash - -set -e - -: "${ZAMMAD_DIR:=/opt/zammad/storage}" -: "${BACKUP_DIR:=/var/tmp/zammad}" -: "${BACKUP_TIME:=03:00}" -: "${HOLD_DAYS:=10}" -: "${ZAMMAD_RAILSSERVER_HOST:=zammad-railsserver}" -: "${ZAMMAD_RAILSSERVER_PORT:=3000}" -: "${POSTGRESQL_DB:=zammad_production}" -: "${POSTGRESQL_HOST:=zammad-postgresql}" -: "${POSTGRESQL_PORT:=5432}" -: "${POSTGRESQL_USER:=zammad}" -: "${POSTGRESQL_PASS:=zammad}" - - -function check_railsserver_available { - until (echo > "/dev/tcp/$ZAMMAD_RAILSSERVER_HOST/$ZAMMAD_RAILSSERVER_PORT") &> /dev/null; do - echo "waiting for railsserver to be ready..." - sleep 60 - done -} - -function zammad_backup { - TIMESTAMP="$(date +'%Y%m%d%H%M%S')" - - echo "${TIMESTAMP} - backing up zammad..." - - # delete old backups - if [ -d "${BACKUP_DIR}" ] && [ -n "$(ls "${BACKUP_DIR}")" ]; then - find "${BACKUP_DIR}"/*_zammad_*.gz -type f -mtime +"${HOLD_DAYS}" -delete - fi - - if [ "${NO_FILE_BACKUP}" != "yes" ]; then - # tar files - tar -czf "${BACKUP_DIR}"/"${TIMESTAMP}"_zammad_files.tar.gz "${ZAMMAD_DIR}" - fi - - #db backup - pg_dump --dbname=postgresql://"${POSTGRESQL_USER}:${POSTGRESQL_PASS}@${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/${POSTGRESQL_DB}" | gzip > "${BACKUP_DIR}"/"${TIMESTAMP}"_zammad_db.psql.gz - - echo "backup finished :)" -} - -if [ "$1" = 'zammad-backup' ]; then - - check_railsserver_available - - while true; do - NOW_TIMESTAMP=$(date +%s) - TOMORROW_DATE=$(date -d@"$((NOW_TIMESTAMP + 24*60*60))" +%Y-%m-%d) - - zammad_backup - - NEXT_TIMESTAMP=$(date -d "$TOMORROW_DATE $BACKUP_TIME" +%s) - NOW_TIMESTAMP=$(date +%s) - - sleep $((NEXT_TIMESTAMP - NOW_TIMESTAMP)) - done - -elif [ "$1" = 'zammad-backup-once' ]; then - check_railsserver_available - - zammad_backup - -elif [ "$1" = 'zammad-backup-db' ]; then - NO_FILE_BACKUP="yes" - - zammad_backup - -else - exec "$@" -fi