It should be the first.
Placing ourselves at the future time when he comes back, the appropriate statement is "the coffee is ready", not "the coffee has been ready". Transferring this back to the present gives "will be ready", not "will have been ready".
In contrast, consider "By the time you come back, I will have finished". In this case the appropriate statement, at the time he comes back, is "I have finished". This translates to "will have finished".