.. Copyright 2025 Canonical Ltd. .. See LICENSE file for licensing details. 12-Factor app support in Charmcraft and Rockcraft ================================================= **A simple way to deploy and operate 12-Factor web applications.** You can use a few simple commands to set up a fully integrated and observable Kubernetes environment for your web application. This solution, called 12-factor charms, provides an abstraction layer over existing Canonical products. 12-factor charms are aimed at developers who create applications based on the `12-factor methodology. `_ While this page introduces 12-factor charms in the context of the `Flask framework `_, the same solution also applies to 12-factor applications built using the following frameworks: - Django - FastAPI - Go - Spring Boot (coming soon) The foundations: Juju, charms and rocks --------------------------------------- The 12-factor charm solution uses and combines capabilities from the following Canonical products: - `Juju `_ is an open source orchestration engine for software operators that enables the deployment, integration and lifecycle management of applications at any scale and on any infrastructure. - A `charm `_ is an operator - business logic encapsulated in reusable software packages that automate every aspect of an application's life. - `Charmcraft `_ is a CLI tool that makes it easy and quick to initialize, package, and publish charms. - `Rockcraft `_ is a tool to create rocks – a new generation of secure, stable and OCI-compliant container images, based on Ubuntu. A Rockcraft framework (conceptually similar to a `snap extension `_) is initially used to facilitate the creation of a well structured, minimal and hardened container image, called a rock. A Charmcraft profile can then be leveraged to add a software operator (charm) around the aforementioned container image. Encapsulating the original 12-factor application in a charm allows your application to benefit from the entire `charm ecosystem `_, meaning that the app can be connected to a database, e.g. an HA Postgres, observed through a Grafana based observability stack, get ingress and much more. Create a complete development environment in a few commands ----------------------------------------------------------- Rockcraft natively supports Flask. Production-ready OCI images for your Flask application can be created using Rockcraft with 3 easy commands that need to be run in the root directory of the Flask application: .. code-block:: bash sudo snap install rockcraft --classic rockcraft init --profile flask-framework rockcraft pack The `full Rockcraft tutorial `_ for creating an OCI image for a Flask application takes you from a plain Ubuntu installation to a production ready OCI image for your Flask application. Charmcraft also natively supports Flask. You can use it to create charms that automate every aspect of your Flask application's life, including integrating with a database, preparing the tables in the database, integrating with observability and exposing the application using ingress. From the root directory of the Flask application, the charm for the application can be created using 4 easy commands: .. code-block:: bash mkdir charm & cd charm sudo snap install charmcraft --classic charmcraft init --profile flask-framework charmcraft pack The `full getting started tutorial `_ for creating a charm for a Flask application takes you from a plain Ubuntu installation to deploying the Flask application on Kubernetes, exposing it using ingress and integrating it with a database. Documentation ------------- Documentation for this project is located in a few places: 1. This site: Documentation related to the product 2. `Rockcraft `_: Documentation related to the OCI image containers 3. `Charmcraft `_: Documentation related to the software operators (charms) 4. Coming soon: Documentation related to development Project and community --------------------- 12-Factor charms are a member of the Ubuntu family. This is an open source project that warmly welcomes community projects, contributions, suggestions, fixes and constructive feedback. * `Code of conduct `_ * `Get support `_ * `Join our online chat `_ * Contribute * Roadmap Thinking about using 12-Factor charms in your next project? Get in touch! .. toctree:: :hidden: :maxdepth: 1 Tutorial How to Explanation