<p>According to <a href="https://cloud.google.com/solutions/best-practices-for-building-containers" rel="nofollow noreferrer">this article</a>, Google mentioned</p>
<blockquote>
<p>You might see the following actions in public images, but do not
follow their example:</p>
<ul>
<li>Using a process management system such as supervisord to manage one or
several apps in the container.</li>
</ul>
</blockquote>
<p>I understand there's many downside of using supervisord to manage multiple app in one container. Such as not ideal for autoscaling, hard to health check etc..
But is there any other downside of it? I wonder how supervisord handle PID 1 problem?</p>

haudoing
<p>There are a lot of reasons but a few of them are:</p>
<ul>
<li>Docker is designed to keep applications as separated containers.</li>
<li>It is easier to control application if you have single application in single container</li>
<li>Docker has mechanism called health-check which monitor your application health. You lose it totally when you use supervisord, because you SHOULD NOT monitor 2 applications at the same time.</li>
<li>Monitoring single application is easier. When you have 2 applications in container and your container is using too much resources, you do not know which is broken.</li>
<li>Scaling container is easier when you have single application. You can scale single application</li>
<li>When you have single application for example Nginx, you can reuse it for multiple projects.</li>
<li>Logging is easier when only single application is logging to stdout/stderr</li>
<li>Networking and security is easier when your applications are split.</li>
<li>Docker has its own process manager.</li>
</ul>
<p>Some of them are personal but you can see this is bad practice to use multiple apps in container.</p>
<h1>More technical things</h1>
<ul>
<li>You should have only one parent process. Docker can send singnal only to process PID1. If you have multiple top level processes, one process cannot gracefully exit.</li>
<li>Most of init systems kill the orphaned processes. So If you have 2 processes started as background process in the entrypoint it will be killed.</li>
</ul>
