A 12-Factor app charm is a charm that has been created using certain coordinated pairs of Rockcraft and Charmcraft profiles designed to give you most of the content you will need to generate a rock^ for a charm, and then the charm itself, for a particular type of workload (e.g., an application developed with Flask).
Did you know? The OCI images produced by the 12-Factor-app-geared Rockcraft extension are designed to work standalone and are also well integrated with the rest of the Flask framework tooling.
When you initialise a rock with a 12-Factor-app-charm-geared profile, the initialisation will generate all the basic structure and content you’ll need for the rock, including a rockcraft.yaml
^ prepopulated with an extension matching the profile. Similarly, when you initialise a charm with a 12-Factor-app-charm-geared profile, that will generate all the basic structure content you’ll need for the charm, including a charmcraft.yaml
pre-populated with an extension matching the profile as well as a src/charm.py
pre-loaded with a library (paas_charm
) with constructs matching the profile and the extension.
At present, there are four pairs of profiles:
flask-framework
(Rockcraft extension ‘flask-framework’, Charmcraft extension ‘flask-framework’)django-framework
(Rockcraft extension ‘django-framework’, Charmcraft extension ‘django-framework’)fastapi-framework
(Rockcraft extension ‘fastapi-framework’, Charmcraft extension ‘fastapi-framework’)go-framework
(Rockcraft extension ‘go-framework’, Charmcraft extension ‘go-framework’)
Contributors: @econley, @jdkandersson, @javierdelapuente, @tmihoc