A container is a single running instance of a service, worker, or static site resource that you have shipped on App Platform, and is in essence a live, run-time instance of an image (the artifact produced by the build process). You can think of them as a single units of deployment for your app. Containers are useful to cloud-hosted applications as they allow developers to isolate their app and its dependencies from the environment in which it runs, simplifying the process for scaling, resourcing, and routing traffic to an app.
A container is given an allotment of resources it is allowed to use at run-time – a given number of CPUs, and GiB of memory. However, in App Platform, containers are served behind a load-balancer that can “even out” incoming requests among many containers, allowing you to freely add more containers when more capacity is needed for your app, and take them away when it is not.
While containers are intended to be an under-the-hood implementation detail in App Platform that you won’t necessarily worry about, App Platform will parse any Dockerfiles in your repo at run-time, presuming that you have details about your container image build process that you want respected. If a Dockerfile is not present, the build process falls back to using a buildpack for the selected programming language.