When to create an image in a full-stack application?

I am still new to Docker, and I am wondering about best practices on when to create an image. My project has three parts:

  1. React UI
  2. Java Scheduler
  3. Java Dropwizard REST Backend

The Java Scheduler and REST Backend interact through HTTP requests and database (they’d have to share a MongoDB instance).

The REST Backend and UI interact through HTTP.

So my question is if it would be a good practice to just have on Dockerfile (one image) for all of them, or should I have three images (one for each)? What do you recommend?