mirror of
https://github.com/dokku/dokku.git
synced 2025-12-29 00:25:08 +01:00
- remove deployed applications during dpkg purge - disable all core plugins during dpkg purge - ensure init files are removed - ensure motd is removed - remove all core plugins, dokku config files (including tls/sshcommand entries etc.) during purge - remove all empty directories and broken symlinks in the DOKKU_ROOT and DOKKU_LIB_ROOT directories during purge Note that we do not delete the dokku user itself as there might be other data we don't know about in this directory.
56 lines
1.5 KiB
Bash
Executable File
56 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
set -eo pipefail; [[ $TRACE ]] && set -x
|
|
|
|
readonly DOKKU_ROOT="${DOKKU_ROOT:-/home/dokku}"
|
|
readonly DOKKU_LIB_ROOT="${DOKKU_LIB_PATH:-/var/lib/dokku}"
|
|
|
|
ps_backtrace() {
|
|
if [ $# -lt 1 ]; then
|
|
echo "Usage: $0 PID" > /dev/stderr
|
|
exit 1
|
|
fi
|
|
|
|
declare -i pid=$1;
|
|
ppid=0;
|
|
header_modifier="";
|
|
while : ; do
|
|
if [ $ppid -ne 0 ]; then
|
|
header_modifier=h;
|
|
fi;
|
|
ppid=$(ps -o ppid= $pid);
|
|
ps uww $header_modifier -p $pid;
|
|
if [ $pid -eq 1 ]; then
|
|
break;
|
|
fi;
|
|
pid=$ppid;
|
|
done;
|
|
}
|
|
|
|
main() {
|
|
# HACK: Ensure that we only delete data when purging dokku from the system
|
|
if ps_backtrace $BASHPID 2> /dev/null | grep dpkg | grep -- "--purge" > /dev/null; then
|
|
echo "Processing purge"
|
|
|
|
echo "Destroying deployed applications"
|
|
for app in $(DOKKU_QUIET_OUTPUT=1 dokku apps); do
|
|
dokku --force apps:destroy $app
|
|
done
|
|
|
|
# HACK: Only disable core plugins, as we don't know what data users store in non-core plugin directories
|
|
echo "Disabling all core plugins"
|
|
find ${DOKKU_LIB_ROOT}/core-plugins/available -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
|
|
if [ ! -d ${DOKKU_LIB_ROOT}/plugins/available/$plugin ]; then
|
|
rm ${DOKKU_LIB_ROOT}/plugins/available/$plugin;
|
|
PLUGIN_PATH=${DOKKU_LIB_ROOT}/core-plugins plugn disable $plugin
|
|
PLUGIN_PATH=${DOKKU_LIB_ROOT}/plugins plugn disable $plugin
|
|
fi
|
|
done
|
|
else
|
|
echo "Processing $1"
|
|
fi
|
|
|
|
dokku cleanup
|
|
}
|
|
|
|
main "$@"
|