Set up a 12-Factor app rock

The following how-to guide provides instructions on initializing and configuring rocks for 12-factor apps.

Initialize a 12-factor app rock

Use rockcraft init and specify the relevant profile:

rockcraft init --profile <profile>

Rockcraft automatically creates a rockcraft.yaml project file for the rock in your current directory. You will need to check the project file to verify that the rock’s name and description are correct.

rockcraft init --profile django-framework

For more information, see: init

Include extra files in the OCI image

The following files are included in the image by default from the root of the project:

  • app (does not apply to the go-framework)

  • app.py (does not apply to the go-framework)

  • migrate

  • migrate.sh

  • migrate.py (does not apply to the go-framework)

  • static

  • templates

To change this list, add the following snippet to the project file:

rockcraft.yaml
  parts:
    flask-framework/install-app:
      prime:
        - flask/app/.env
        - flask/app/app.py
        - flask/app/webapp
        - flask/app/templates
        - flask/app/static

Note the flask/app/ prefix that is required followed by the relative path to the project root.

Include additional debs in the OCI image

If your app requires debs – for example, to connect to a database – add the following snippet to the project file:

rockcraft.yaml
  parts:
    flask-framework/dependencies:
      stage-packages:
        # list required packages or slices for your flask application below.
        - libpq-dev