Using a single container per application can lead to scalability issues and make it harder to manage processes. Installing things at runtime can cause problems such as rate limiting, failed downloads, or internet connection saturation. Writing logs to files instead of stdout makes it harder for orchestration platforms to collect and aggregate service logs, making debugging more difficult. Using a single container per service allows for horizontal scaling, distinguishes between components, and enables starting processes in a specific order. Installing dependencies at runtime can lead to rate limiting, failed downloads, or internet connection saturation, and using the `:latest` tag without pinning dependencies can cause problems with updates and compatibility. Logging to stdout makes it easier for orchestration platforms to collect and aggregate service logs, making debugging more efficient.