You could do this all on a single stack. But I would recommand using a stack per logical function as the chance of having errors and incidents will decrease if properly designed.
Create each stack to have at lease 2 similar members to make sure you can do redundant LACP to hots in the segment. Set en configure only Vlans to be used in that area, no DMZ vlans on Public stack and vice versa.
Do logically segment management for the stacks per area.
And make sure all stacks are connected to only one uplink devices or cluster to maintain a logical L2 architecture so L2 will have predicable behaviour at all times.
L2 Isolation can be done by using port-isolation function which is mutch easier than doing muxing and just use different L3 subnets routed on a firewall to segment the area's as that will be mutch easier to maintain.
If cost / space is an issue you could consolidate in less stacks so you will need less switches as ports can host more functions. You can do this by creating a map of security level and only consolidate area's with adjecent security levels so the security contrasts of combined functions will be as little as possible.
But the earlier stated advice should still be followed.