Releases: tiangolo/uwsgi-nginx-flask-docker
Nginx worker connections number
Graceful shutdown handling
2018-06-22:
Improvements from parent image:
-
Make uWSGI require an app to run, instead of going in "full dynamic mode" while there was an error. Supervisord doesn't terminate itself but tries to restart uWSGI and shows the errors. Uses
need-app
as suggested by luckydonald in this comment. -
Correctly handled graceful shutdown of uWSGI and Nginx. Thanks to desaintmartin in this PR.
Alpine, USE_NGINX_WORKER_PROCESSES, and bug fixes
There are now Alpine flavors for Python3.6 and Python2.7. They have been there for some time, but I hadn't created a release including them.
There's now a USE_NGINX_WORKER_PROCESSES
to control how many Nginx processes to run.
And several bug fixes in this image and the parent image.
Use explicit uwsgi.ini file in example projects
Note: The purpose of this release is mainly to upload the updated example zip projects.
Added support for prestart.sh script, e.g. for migrations
2017-12-10: Added support for /app/prestart.sh
script to run arbitrary code before starting the app (for example, Alembic - SQLAlchemy migrations). The documentation for the /app/prestart.sh
is in the main README.
Configure which port the container should listen on with LISTEN_PORT
Examples for Single-Page Apps (front end) updated to work even with pacakges
Examples for Single-Page Apps (front end) updated to work even with packages, using app.static_folder
instead of hardcoding the path.
Python package example project and instructions
2017-09-02:
- Example project with a Python package structure and a section explaining how to use it and structure a Flask project like that.
- Also, the examples and documentation now use the
flask run
commands, that allows running a package application while developing more easily.
New architecture, env vars for configs, Python 3.6
Many changes:
- New official image tags:
python3.6
,python3.6-index
,python.3.5
,python3.5-index
,python2.7
andpython2.7-index
. All the other images are deprecated in favor is this ones. - Python 3.6 is now the recommended default. Even the example projects for other versions were removed to discourage using older Python versions for new projects.
- Any of the older images that didn't have a Python version will show a deprecation warning and take some time to start. As soon the tag
latest
will point to Python 3.6 and the other tags will be removed. - There were several improvements in the bas image
tiangolo/uwsgi-nginx
that improved this image too. - By default, now there is no limit in the upload file size in Nginx. It can be configured in an environment variable.
- It's now possible to configure several things with environment variables:
- Serve
index.html
directly:STATIC_INDEX
- Set the max upload file size:
NGINX_MAX_UPLOAD
- Set a custom
uwsgi.ini
file (that allows using a custom directory different than/app
):UWSGI_INI
(using the ideas by @bercikr in #5 ). - Set a custom
./static/
path:STATIC_PATH
- Set a custom
/static/
URL:STATIC_URL
- Serve
- As all this configurations are available as environment variables, the choices are a lot more simple. Actually, any new project would just need to use a
Dockerfile
with:
FROM tiangolo/uwsgi-nginx-flask:python3.6
COPY ./app /app
and then customize with environment variables.
v0.2.0
Update examples, with new base uwsgi-nginx image that starts a dynamic number of processes from 2 to 16 to handle uWSGI responses.
That's specially useful in cases where there are some slow requests that take time to respond, allowing all the other fast requests to be answered quickly (in a different process) without having to wait for the first slow request to finish.
Also, there's now support for Python 3.5. With an equivalent image tag in Python 3.5 for each standard image tag and an equivalent example project template for each image tag. Nevertheless, Python 2.7 is still the default, as is for the Flask developers.