To expand on the "dependencies" idea of my previous post, although you technically can put a process supervisor, a web server, an application server, and a database in the same container, this is not the best practice. It makes your app simpler to distribute (a single image, no orchestration) but harder to evolve (e.g. move the database to its own physical server, or replicate it and put them behind a connection pooler).
For instance if you have a tool to manage a cluster of containers, you will be able to manage the different processes/containers logs in a repeatable way.
But sure, if you know you don't need the added flexibility, you can put everything you want in the same image.