A stack of eleven services where four are needed by two people occasionally, started by everybody constantly.
services:
elasticsearch:
profiles: [search]
kibana:
profiles: [search]
mailpit:
profiles: [mail]
# default up starts neither
$ docker compose up -d
# and when you need them
$ docker compose --profile search up -d
Memory is the reason: the search pair was 2.4 GB on a laptop that had 16. A service with a profile is excluded from every command that does not name the profile, including down, which surprises people — stopping the stack leaves the profiled containers running unless the profile is named again. Setting COMPOSE_PROFILES in a personal environment file is the way to make a choice sticky.