diff --git a/anthias_django/settings.py b/anthias_django/settings.py index d8894620d..67d441b4b 100644 --- a/anthias_django/settings.py +++ b/anthias_django/settings.py @@ -63,6 +63,7 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'dbbackup', ] MIDDLEWARE = [ @@ -108,10 +109,6 @@ else '/data/.screenly/screenly.db' ), }, - 'backup': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': '/data/.screenly/backup.db', - }, } @@ -179,3 +176,8 @@ 'TITLE': 'Anthias API', 'VERSION': '1.2.0', } + +# `django-dbbackup` settings +DBBACKUP_STORAGE = 'django.core.files.storage.FileSystemStorage' +DBBACKUP_STORAGE_OPTIONS = {'location': '/data/.screenly/backups'} +DBBACKUP_HOSTNAME = 'anthias' diff --git a/bin/start_server.sh b/bin/start_server.sh index ac78712e9..b7220a9cc 100755 --- a/bin/start_server.sh +++ b/bin/start_server.sh @@ -5,6 +5,7 @@ ENVIRONMENT=${ENVIRONMENT:-production} mkdir -p \ /data/.config \ /data/.screenly \ + /data/.screenly/backups \ /data/screenly_assets cp -n /usr/src/app/ansible/roles/screenly/files/screenly.conf /data/.screenly/screenly.conf @@ -16,12 +17,12 @@ echo "Running migration..." # database is not left in an inconsistent state if the migration fails. if [ -f /data/.screenly/screenly.db ]; then - cp /data/.screenly/screenly.db /data/.screenly/backup.db && \ - cp /data/.screenly/screenly.db /data/.screenly/screenly.db.bak && \ - ./manage.py migrate --fake-initial --database=backup && \ - mv /data/.screenly/backup.db /data/.screenly/screenly.db + ./manage.py dbbackup --noinput --clean && \ + ./manage.py migrate --fake-initial --noinput || \ + ./manage.py dbrestore --noinput else - ./manage.py migrate + ./manage.py migrate && \ + ./manage.py dbbackup --noinput --clean fi if [[ "$ENVIRONMENT" == "development" ]]; then diff --git a/requirements/requirements.txt b/requirements/requirements.txt index 48c04b5f4..f43ee8064 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -7,6 +7,7 @@ cryptography==3.3.2 Cython==0.29.33 Django==3.2.18 djangorestframework==3.14.0 +django-dbbackup==4.2.1 drf-spectacular==0.27.2 future==0.18.3 gevent-websocket==0.10.1 diff --git a/requirements/requirements.viewer.txt b/requirements/requirements.viewer.txt index 7e3452877..d0724fe84 100644 --- a/requirements/requirements.viewer.txt +++ b/requirements/requirements.viewer.txt @@ -6,6 +6,7 @@ configparser==4.0.2 cryptography==3.3.2 Cython==0.29.33 Django==3.2.18 +django-dbbackup==4.2.1 drf-spectacular==0.27.2 future==0.18.3 idna==3.7