From Cambridge Learner's dictionary:
do sb good:to have a good effect on someone.
A holiday would do you good.
It's a very common expression and it isn't only used in reference to health.
You'd better go and study. It will do you good.
A new case, but still on topic (perhaps more so than the discussion about whether things are adjectives or adverbs!)
Consider the exchange 'How are you?'/'I'm well'. This could equally be 'How are you?'/'I'm fine'. Until recently, I'd have said 'I'm good' was unacceptable in this context.
But in the last few years I've been hearing 'I'm good' to mean 'I'm fine/well'. 'I'm good' is also used to refer not to general health but to the adequacy of something: 'Who'd like another drink?'/'Not for me thanks, I'm good.'
In 'Not for me thanks, I'm good.' it means 'I'm at a good point', 'I've had enough'?
But 'I'm good' has always been used with reference to character, hasn't it?
'I'm too good' meaning 'I'm too kind' or 'I'm good' meaning 'I'm a good girl'.