Idea: docker compose watch --prune
Description
Having just started using watch to rebuild a Go application on code changes, I'm quite happy! It's a solid feature that means I no longer need to rely on other tools to watch for file changes.
I've done some searching around but haven't found any discussion on tidying up dangling images after the numerous if not hundreds of rebuilds that could occur throughout the day.
Adding a --prune option to the command that does this automatically would be a nice next addition.
At present you only have the following options (as far as I'm aware):
- Run
docker system prunemanually once in a while. - Set up a cronjob to run the above command to remove the manual element.
- Or a little more programatic would be to pipe the output of
docker system eventsto another process, pulling out the label forcom.docker.compose.serviceand providing that as a filter to the prune command.
All are undesirable, you might not want this running all the time on a schedule and anything manual is going against the point of having a watcher in the first instance to build / sync.
I have the exact same issue.
I thought of solving it by adding an additional field keep_dangled_image to the configuration of the rebuild action section.
by default keep_dangled_image will be true, and everything will act as today. but if it is false, the compose will delete the image that became dangled after rebuilding the image
services:
nginx:
build:
context: .
develop:
watch:
- action: rebuild
path: ./deps/nginx/nginx.conf
keep_dangled_image: false
This could work for any compose project with a build.
services:
nginx:
build:
context: .
prune: true