.. | ||
files | ||
items.py | ||
metadata.py | ||
README.md |
Flask
This bundle can deploy one or more Flask applications per node.
'flask': {
'myapp': {
'app_module': "myapp",
'apt_dependencies': [
"libffi-dev",
"libssl-dev",
],
'env': {
'APP_SECRETS': "/opt/client_secrets.json",
},
'json_config': {
'this json': 'is_visible',
'inside': 'your template.cfg',
},
'git_url': "ssh://git@bitbucket.apps.seibert-media.net:7999/smedia/myapp.git",
'git_branch': "master",
'deployment_triggers': ["action:do-a-thing"],
},
},
The git repo containing the application has to obey some conventions:
- requirements-frozen.txt (preferred) or requirements.txt
- minimal setup.py to allow for installation with pip
The app
instance has to exists in the module defined by app_module
.
It is also very advisable to enable logging in your app (otherwise HTTP 500s won't be logged):
import logging
if not app.debug:
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
app.logger.addHandler(stream_handler)
If you specify json_config
, then /opt/${app}/config.json
will be
created. The environment variable $APP_CONFIG
will point to the exact
name. You can use it in your app to load your config:
app.config.from_json(environ['APP_CONFIG'])
If json_config
is not specified, you can put a static file in
data/flask/files/cfg/$app_name
.