tl;dr talvez tente
docker exec -it web_only bash
chown -R discourse:www-data /shared/backups
E mais palavras.
Sem olhar, eu tentaria reconstruir o contêiner de dados, esperando que qualquer alteração feita também fosse feita (ou afetasse) o contêiner de dados.
A resposta de mau conselho é tornar ...backups/default gravável por todos e ver a propriedade do backup.
Então, acho que o que você quer fazer é chown default para discourse.www-data no contêiner web (esse é o que está fazendo os backups).
Aqui está um contêiner único recente:
root@forum.mbse-capella.org(app):~$ docker exec -it app bash
root@new-app:/# grep www /etc/passwd
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
root@new-app:/# grep discourse /etc/passwd
discourse:x:1000:1000::/home/discourse:/bin/bash
Em alguns momentos no passado, o processo de build fazia chown em todos os arquivos, mas isso pode levar muito tempo, então acho que isso pode ter sido removido em algum momento (isso é mais um sentimento do que algo baseado em prestar atenção aos commits).