Containers are a way to package applications and their dependencies in such a way that makes them portable and easy to run in different operating environments. A container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings. Containers share the host machine’s operating system kernel and therefore do not require an operating system per application. This means your do not need to first install an OS like Linux to run your application on Uffizzi.
When your application is hosted on Uffizzi, it runs in the context of a container to ensure your application executes the same in the cloud as it does on your local workstation. There are two ways to supply Uffizzi with your container image:
- Directly via Docker Hub or
- Indirectly via Uffizzi's automated build process
Docker is the most popular runtime and toolkit for building, running and managing container images. Using the Docker CLI, you can build container images, run them locally and then push them to the public Docker Hub container registry. Building a Docker image requires a Dockerfile—a specification that essentially describes the steps someone would need to build your application on their workstation. Uffizzi allows you to import images directly from Docker Hub and will even redeploy your application when changes are made to your image on Docker Hub.
Alternatively, you can let Uffizzi build and manage your container images via the GitHub integration. When you import repositories from GitHub, Uffizzi will attempt to auto-detect your application type and build a container image for you using our custom buildpacks. If successful, Uffizzi deploys your container and stores its image. When you make changes to your app repository, Uffizzi will rebuild a container image for you.