diff --git a/docker/scripts/clean-ownership.sh b/docker/scripts/clean-ownership.sh new file mode 100755 index 0000000..5c2d9df --- /dev/null +++ b/docker/scripts/clean-ownership.sh @@ -0,0 +1,25 @@ +REPO_ROOT=$(dirname $(readlink -f $0))/../.. + +# Export desktop environment shell configuration +export $($REPO_ROOT/docker/scripts/environment.sh) + +SECRETS_VOLUMES=$(cat $REPO_ROOT/docker/scripts/clean*.sh | grep DESKTOP_ | cut -f 2 -d ' ' | sort | uniq) + +for VOLUME_NAME in $SECRETS_VOLUMES; do + + VOLUME_PATH=$(printenv $VOLUME_NAME) + + echo Owning $VOLUME_NAME... + + # Give the desktop environment user ownership of the volume + docker run \ + --rm \ + --user root \ + --volume $VOLUME_NAME:$VOLUME_PATH \ + alpine:latest \ + chown -R $DESKTOP_ENVIRONMENT_USER_ID:$DESKTOP_ENVIRONMENT_USER_ID $VOLUME_PATH & + +done + +# Wait for ownership changes to complete in parallel +wait diff --git a/docker/scripts/clean.sh b/docker/scripts/clean.sh index 0e28840..ffaa70b 100755 --- a/docker/scripts/clean.sh +++ b/docker/scripts/clean.sh @@ -7,5 +7,8 @@ $REPO_ROOT/docker/scripts/stop.sh 2>/dev/null $REPO_ROOT/docker/scripts/wipe-volume.sh DESKTOP_ENVIRONMENT_CACHE_VCSH & $REPO_ROOT/docker/scripts/wipe-volume.sh DESKTOP_ENVIRONMENT_USER_HOME & +# Ensure cleaned volumes are owned after removal +$REPO_ROOT/docker/scripts/clean-ownership.sh + # Wait for cleans to complete in parallel wait diff --git a/docker/scripts/wipe-volume.sh b/docker/scripts/wipe-volume.sh index 7dec2a3..a9460ce 100755 --- a/docker/scripts/wipe-volume.sh +++ b/docker/scripts/wipe-volume.sh @@ -4,15 +4,7 @@ REPO_ROOT=$(dirname $(readlink -f $0))/../.. export $($REPO_ROOT/docker/scripts/environment.sh) VOLUME_NAME=$1 -VOLUME_PATH=$(printenv $VOLUME_NAME) -echo Wiping $VOLUME_NAME... +echo Removing $VOLUME_NAME... -# Remove all files in the volume rather than removing the volume so that ownership permissions are preserved -docker run \ - --rm \ - --user root \ - --volume $VOLUME_NAME:$VOLUME_PATH \ - --workdir $VOLUME_PATH \ - alpine:latest \ - ash -c 'rm -rf ..?* .[!.]* *' +docker volume rm $VOLUME_NAME