Minimal template project to create a web application based on Flask and using Pandas for data manipulation.
Based on https://github.com/bandaangosta/cookiecutter-flask-minimal
Run the application (for development only):
make run
And open it in the browser at http://127.0.0.1:5000/
This is built to be used with Python 3. Update Makefile
to switch to Python 2 if needed.
Some Flask dependencies are compiled during installation, so gcc
and Python header files need to be present.
For example, on Ubuntu:
apt install build-essential python3-dev
-
create virtualenv with Flask and Minimal Flask Pandas installed into it (latter is installed in develop mode which allows modifying source code directly without a need to re-install the app):
make venv
-
run development server in debug mode:
make run
; Flask will restart if source code is modified -
run tests:
make test
(see also: Testing Flask Applications) -
create source distribution:
make sdist
(will run tests first) -
to remove virtualenv and built distributions:
make clean
-
to add more python dependencies: add to
install_requires
insetup.py
-
to modify configuration in development environment: edit file
settings.cfg
; this is a local configuration file and it is ignored by Git - make sure to put a proper configuration file to a production environment when deploying
If you are interested in an out-of-the-box deployment automation, check out accompanying
cookiecutter-flask-ansible
.
Or, check out Deploying with Fabric on one of the possible ways to automate the deployment.
In either case, generally the idea is to build a package (make sdist
), deliver it to a server (scp ...
),
install it (pip install minimalflaskpandas.tar.gz
), ensure that configuration file exists and
MINIMALFLASKPANDAS_SETTINGS
environment variable points to it, ensure that user has access to the
working directory to create and write log files in it, and finally run a
WSGI container with the application.
And, most likely, it will also run behind a
reverse proxy.
Two Docker-based deployments are available in this project: one based on Apache + mod_wsgi and the other on nginx + uwsgi. See each Dockerfile for details.
While in project folder, where Dockerfiles reside, run:
docker build -t minimalflaskpandas -f Dockerfile.xxx .
docker run -it --rm -p 80:80 --name my_minimalflaskpandas minimalflaskpandas
If tested OK, you can run the app in background (will restart on reboot):
docker run --detach -p 80:80 --restart unless-stopped --name my_minimalflaskpandas minimalflaskpandas