Skip to content
This repository has been archived by the owner on Feb 6, 2020. It is now read-only.

IBM/flask-starter

Repository files navigation

WARNING: This repository is no longer maintained ⚠️

Please see the replacement repositories available for Node.js, Go, Java Liberty, Java Spring, Python Flask, Python Django, and Swift.

This repository will not be updated. The repository will be kept available in read-only mode.

IBM Cloud

IBM Cloud platform Apache 2

Create and deploy a basic Python Flask application

We have similar applications available for Go, Java Liberty, Swift, Spring, and Node.

In this sample application, you will create a basic Python application using Flask. This application contains an opinionated set of files for web serving:

  • public/index.html
  • public/404.html
  • public/500.html

Steps

You can deploy this application to IBM Cloud or build it locally by cloning this repo first. Once your app is live, you can access the /health endpoint to build out your cloud native application.

Deploying to IBM Cloud

Deploy to IBM Cloud

Use the button above to deploy this same application to IBM Cloud. This option will create a deployment pipeline, complete with a hosted Git lab project and devops toolchain. You will have the option of deploying to either CloudFoundry or a Kubernetes cluster. IBM Cloud DevOps services provides toolchains as a set of tool integrations that support development, deployment, and operations tasks inside IBM Cloud.

Building Locally

To get started building this application locally, you can either run the application natively or use the IBM Cloud Developer Tools for containerization and easy deployment to IBM Cloud.

Native Application Development

Running flask applications has been simplified with a manage.py file to avoid dealing with configuring environment variables to run your app. From your project root, run your application

python manage.py <subcommand> [ipaddress]

manage.py offers a variety of different run commands to match the proper situation:

  • start: starts a server in a production setting using gunicorn.
  • run: starts a native flask development server. This includes backend reloading upon file saves and the Werkzeug stack-trace debugger for diagnosing runtime failures in-browser.
  • livereload: starts a development server via the livereload package. This includes backend reloading as well as dynamic frontend browser reloading. The Werkzeug stack-trace debugger will be disabled, so this is only recommended when working on frontend development.
  • debug: starts a native flask development server, but with the native reloader/tracer disabled. This leaves the debug port exposed to be attached to an IDE (such as PyCharm's Attach to Local Process)

There are also a few utility commands:

  • build: compiles .py files within the project directory into .pyc files
  • test: runs all unit tests inside of the project's test directory

Your application is running at: http://localhost:3000/ in your browser.

  • Health endpoint: /health

There are two different options for debugging a flask project:

  1. Run python manage.py runserver to start a native flask development server. This comes with the Werkzeug stack-trace debugger, which will present runtime failure stack-traces in-browser with the ability to inspect objects at any point in the trace. For more information, see Werkzeug documentation.
  2. Run python manage.py debug to run a flask development server with debug exposed, but the native debugger/reloader turned off. This grants access for an IDE to attach itself to the process (i.e. in PyCharm, use Run -> Attach to Local Process)

IBM Cloud Developer Tools

Install IBM Cloud Developer Tools on your machine by using the following installation command: curl -sL https://ibm.biz/idt-installer | bash.

Your application will be compiled with Docker containers. To compile and run your app, run:

ibmcloud dev build
ibmcloud dev run

This will launch your application locally. When you are ready to deploy to IBM Cloud on CloudFoundry or Kubernetes, run one of the commands below:

ibmcloud dev deploy -t buildpack
ibmcloud dev deploy -t container

You can build and debug your app locally with:

ibmcloud dev build --debug
ibmcloud dev debug

Next Steps

License

This sample application is licensed under the Apache License, Version 2. Separate third-party code objects invoked within this code pattern are licensed by their respective providers pursuant to their own separate licenses. Contributions are subject to the Developer Certificate of Origin, Version 1.1 and the Apache License, Version 2.

Apache License FAQ

Releases

No releases published

Packages

No packages published

Languages