Run all commands from the Docker host as your user (e.g. deployer), from the Dradis installation directory (where compose.yaml lives).
Back up the credentials first. The credentials directory holds the encryption keys that protect your data. Without them, database and storage backups cannot be decrypted. If these keys are lost, all encrypted data is unrecoverable.
docker exec app tar czf - -C /dradispro/config/credentials . > backups/dradis-credentials.tar.gz docker exec app tar czf - -C /dradispro/storage . > backups/dradis-storage.tar.gz docker exec app tar czf - -C /dradispro/storage/public . > backups/dradis-storage-public.tar.gz docker exec app tar czf - -C /dradispro/public/assets . > backups/dradis-assets.tar.gz
Source your .env file first so the password variable is available, then run mysqldump inside the db container:
source .env && docker exec db mysqldump -u root -p"$MYSQL_ROOT_PASSWORD" --hex-blob --single-transaction --quick dradis_production > backups/mysql-$(date +%F).sql
Before restoring from a backup, make sure your containers are not running.
docker exec -i app tar xzf - -C /dradispro/config/credentials --touch < backups/dradis-credentials.tar.gz docker exec -i app tar xzf - -C /dradispro/storage --touch < backups/dradis-storage.tar.gz docker exec -i app tar xzf - -C /dradispro/storage/public --touch < backups/dradis-storage-public.tar.gz docker exec -i app tar xzf - -C /dradispro/public/assets --touch < backups/dradis-assets.tar.gz
source .env && docker exec -i db mysql -u root -p"$MYSQL_ROOT_PASSWORD" dradis_production < backups/mysql-<date>.sql
Great job, you reached the end of the guide! Have you read all of them?
Last updated by Aaron on 2026-06-08
Loading form...
Your email is kept private. We don't do the spam thing.