- Bump flask from 3.1.2 to 3.1.3 in /docker-images. PR #408 by @dependabot[bot].
- ⬆ Bump flask from 3.1.1 to 3.1.2. PR #397 by @dependabot[bot].
- Bump flask from 3.1.0 to 3.1.1 in /docker-images. PR #393 by @dependabot[bot].
- ⬆ Bump flask from 2.2.5 to 3.1.0. PR #391 by @dependabot[bot].
- 🔥 Drop support for Python 3.7 and 3.8. PR #388 by @tiangolo.
- 📝 Add note about historical README. PR #403 by @tiangolo.
- 📝 Add deprecation note. PR #402 by @tiangolo.
- ⬆️ Upgrade latest-changes to 0.7.1. PR #431 by @tiangolo.
- 🔧 Fix Docker action pin version comments. PR #429 by @tiangolo.
- 👷 Fix latest-changes checkout target. PR #428 by @tiangolo.
- ⬆️ Update issue-manager to 0.8.1. PR #427 by @tiangolo.
- ⬆️ Update latest-changes to 0.6.1. PR #426 by @tiangolo.
- 👷 Simplify pull request workflow triggers. PR #424 by @tiangolo.
- 👷 Update setup-python pin comment to 6.2.0. PR #423 by @tiangolo.
- 📝 Refactor release notes, move to its own file. PR #422 by @tiangolo.
- 👷 Update issue-manager to 0.7.1. PR #421 by @tiangolo.
- ⬆️ Update issue-manager to 0.7.0. PR #420 by @tiangolo.
- 🔒️ Add zizmor workflow security checks. PR #418 by @tiangolo.
- ⬆ Bump the github-actions group across 1 directory with 3 updates. PR #417 by @dependabot[bot].
- 🔥 Remove configs now stored in central GitHub repo. PR #414 by @tiangolo.
- 👷 Update Dependabot. PR #412 by @tiangolo.
- ⬆ Bump docker/build-push-action from 6 to 7. PR #411 by @dependabot[bot].
- ⬆ Bump actions/checkout from 5 to 6. PR #405 by @dependabot[bot].
- ⬆ Bump peter-evans/dockerhub-description from 4 to 5. PR #404 by @dependabot[bot].
- 👷 Upgrade actions/checkout from v5 to v6. PR #407 by @tiangolo.
- 👷 Upgrade
latest-changesGitHub Action and pinactions/checkout@v5. PR #406 by @tiangolo. - 🔥 Drop support for Python 3.9. PR #401 by @tiangolo.
- ⬆ Bump tiangolo/issue-manager from 0.5.1 to 0.6.0. PR #400 by @dependabot[bot].
- ⬆ Bump actions/labeler from 5 to 6. PR #399 by @dependabot[bot].
- ⬆ Bump actions/setup-python from 5 to 6. PR #398 by @dependabot[bot].
- ⬆ Bump actions/checkout from 4 to 5. PR #396 by @dependabot[bot].
- ⬆ Bump tiangolo/latest-changes from 0.3.2 to 0.4.0. PR #395 by @dependabot[bot].
- 👷 Add CI Labeler. PR #392 by @tiangolo.
- ⬆ Bump tiangolo/latest-changes from 0.3.1 to 0.3.2. PR #390 by @dependabot[bot].
- 🔥 Remove old unused files. PR #389 by @tiangolo.
- ⬆ Bump tiangolo/issue-manager from 0.5.0 to 0.5.1. PR #387 by @dependabot[bot].
- 👷 Update
issue-manager.yml. PR #385 by @tiangolo. - 👷 Update
latest-changesGitHub Action. PR #360 by @tiangolo. - ⬆ Bump docker/build-push-action from 5 to 6. PR #359 by @dependabot[bot].
- ⬆ Bump docker/login-action from 1 to 3. PR #352 by @dependabot[bot].
- ⬆ Bump docker/setup-buildx-action from 1 to 3. PR #351 by @dependabot[bot].
- ⬆ Bump docker/build-push-action from 2 to 5. PR #350 by @dependabot[bot].
- ⬆ Bump actions/setup-python from 4 to 5. PR #349 by @dependabot[bot].
- 👷 Update issue-manager.yml GitHub Action permissions. PR #357 by @tiangolo.
- 🔧 Add GitHub templates for discussions and issues, and security policy. PR #354 by @alejsdev.
- 🔧 Update
latest-changes.yml. PR #348 by @alejsdev.
- ⬆️ Bump flask from 2.2.3 to 2.2.5 in /docker-images. PR #327 by @dependabot[bot].
- ⬆️ Bump flask from 2.2.2 to 2.2.3. PR #321 by @dependabot[bot].
- 👷 Update latest-changes GitHub Action. PR #335 by @tiangolo.
- ⬆️ Update mypy requirement from ^0.991 to ^1.1. PR #322 by @dependabot[bot].
- ⬆️ Update black requirement from ^22.10 to ^23.1. PR #319 by @dependabot[bot].
- ⬆️ Bump actions/setup-python from 4.3.0 to 4.5.0. PR #318 by @dependabot[bot].
- 👷 Update token for latest changes. PR #326 by @tiangolo.
- 👷 Add GitHub Action for Docker Hub description. PR #313 by @tiangolo.
- ⬆ Bump actions/setup-python from 4.7.1 to 5.0.0. PR #338 by @dependabot[bot].
- ⬆ Bump peter-evans/dockerhub-description from 3 to 4. PR #341 by @dependabot[bot].
- ⬆ Bump tiangolo/issue-manager from 0.4.0 to 0.5.0. PR #342 by @dependabot[bot].
- 👷 Update dependabot. PR #336 by @tiangolo.
- ⬆️ Bump actions/setup-python from 4.5.0 to 4.7.1. PR #333 by @dependabot[bot].
- ⬆️ Bump actions/checkout from 3 to 4. PR #332 by @dependabot[bot].
Highlights of this release:
- Support for Python 3.10, 3.11, and 3.9.
- Deprecation of Python 3.6 and 2.7.
- The last Python 3.6 and 2.7 images are available in Docker Hub, but they won't be updated or maintained anymore.
- The last images with a date tag are
python3.6-2022-11-25andpython2.7-2022-11-25.
- Upgraded versions of all the dependencies.
- Small improvements and fixes.
- ✨ Add support for Python 3.11. PR #312 by @tiangolo.
- ✨ Add support for Python 3.10. PR #253 by @tiangolo.
- ♻ Add pip flag --no-cache-dir to reduce disk size used. PR #242 by @tiangolo.
- ✨ Add Python 3.9 image. PR #232 by @tiangolo.
- 🔥 Deprecate and remove Python 3.6. PR #304 by @tiangolo.
- 🔥 Remove support for Python 2.7. PR #246 by @tiangolo.
- ⬆️ Bump flask from 2.0.1 to 2.2.2 in /docker-images. PR #296 by @dependabot[bot].
- ⬆️ Upgrade Flask to the latest version to support Python 3.6. PR #301 by @tiangolo.
- ⬆️ Upgrade Nginx and Alpine (in the base images). PR #283 by @tiangolo.
- ✏️ Fix typo: otherwhise -> otherwise in README. PR #211 by @timgates42.
- 📝 Add note to discourage Alpine with Python. PR #247 by @tiangolo.
- 📝 Add Kubernetes warning, when to use this image. PR #245 by @tiangolo.
- ✏️ ️Fix typo duplicate "Note" in Readme. PR #243 by @tiangolo.
- Fix example for Python 3.8. PR #186 by @ericboucher.
- ⬆️ Update autoflake requirement from ^1.3.1 to ^2.0.0. PR #307 by @dependabot[bot].
- ⬆️ Update black requirement from ^20.8b1 to ^22.10. PR #308 by @dependabot[bot].
- ⬆️ Update docker requirement from ^5.0.3 to ^6.0.1. PR #309 by @dependabot[bot].
- ⬆️ Update mypy requirement from ^0.971 to ^0.991. PR #310 by @dependabot[bot].
- ⬆️ Upgrade CI OS. PR #311 by @tiangolo.
- 🔧 Update Dependabot config. PR #306 by @tiangolo.
- 🔥 Remove Travis backup file. PR #254 by @tiangolo.
- ⬆️ Bump tiangolo/issue-manager from 0.2.0 to 0.4.0. PR #234 by @dependabot[bot].
- 👷 Add scheduled CI. PR #303 by @tiangolo.
- 👷 Add alls-green GitHub Action. PR #302 by @tiangolo.
- ⬆️ Bump actions/setup-python from 4.2.0 to 4.3.0. PR #299 by @dependabot[bot].
- ⬆️ Update black requirement from ^19.10b0 to ^20.8b1. PR #236 by @dependabot[bot].
- ⬆️ Update docker requirement from ^4.2.0 to ^5.0.3. PR #250 by @dependabot[bot].
- ⬆️ Update isort requirement from ^4.3.21 to ^5.8.0. PR #237 by @dependabot[bot].
- ⬆️ Update pytest requirement from ^5.4.1 to ^7.0.1. PR #270 by @dependabot[bot].
- ⬆️ Bump actions/checkout from 2 to 3.1.0. PR #298 by @dependabot[bot].
- ⬆️ Update mypy requirement from ^0.770 to ^0.971. PR #292 by @dependabot[bot].
- ⬆️ Bump actions/setup-python from 1 to 4.2.0. PR #293 by @dependabot[bot].
- 👷 Run tests only on PRs or when pushing on master to avoid double CI. PR #284 by @tiangolo.
- 👷 Update Latest Changes GitHub Action. PR #241 by @tiangolo.
- 👷 Add Dependabot and external dependencies to get automated upgrade PRs. PR #233 by @tiangolo.
- 👷 Add GitHub Action latest-changes. PR #210 by @tiangolo.
- Add GitHub Sponsors button. PR #177.
- Add Python 3.8 and Alpine with Python 3.8. This also includes all the recent updates of the parent image, like:
- Latest version of Nginx,
1.17.10. - Latest version of Debian, Buster.
- Latest version of Alpine,
3.11. - PR #176.
- Latest version of Nginx,
- Remove support for Python 3.5. PR #175.
- Refactor build setup:
- Move to GitHub actions.
- Re-use and simplify code and configs.
- Simplify and update tests.
- Remove deprecated
-indexsufix tags. - PR #173.
- This is the last version to support:
- Debian Stretch (before upgrading to Buster).
- Python 3.5.
- Alpine 3.7 and 3.8 (before upgrading to Alpine 3.11).
- Alpine in older versions of Python, 2.7 and 3.6 (Before upgrading to Python 3.8).
- Tags with
-index(useENV STATIC_INDEX 1instead). - If you need any of those, make sure to use a tag for the build date
2020-05-04.
- Add note about static path in bigger projects. PR #150 by @reka169.
- Fix missing import in example. PR #141 by @Boyu1997.
- Refactor tests to use env vars and add image tags for each build date, like
tiangolo/uwsgi-nginx-flask:python3.8-2019-10-14. PR #154. - Upgrade Travis. PR #135.
- Move
/start.shand/app/prestart.shfunctionality to parent image. PR #134.
2019-02-02:
- The Nginx configurations are generated dynamically from the entrypoint, instead of modifying pre-existing files. PR #50 in the parent image
uwsgi-nginxand PR #121. - Support for a completely custom
/app/nginx.conffile that overrides the generated one. PR #51 in the parent imageuwsgi-nginxand PR #122.
2019-01-01:
- Improved guide for single page applications.
- Links to project generators.
2018-12-29:
- Travis integration, images built and pushed by Travis.
- Fixes in parent image for Nginx.
2018-11-23:
- New Alpine 3.8 images for Python 2.7, Python 3.6 and (temporarily disabled) Python 3.7.
2018-09-22:
- New Python 3.7 images, based on standard Debian and Alpine Linux. All the documentation and project templates have been updated to use Python 3.7 by default. Thanks to desaintmartin in this PR.
2018-06-22:
- You can now use
NGINX_WORKER_CONNECTIONSto set the maximum number of Nginx worker connections andNGINX_WORKER_OPEN_FILESto set the maximum number of open files. Thanks to ronlut in this PR.
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-appas suggested by luckydonald in this comment. -
Correctly handled graceful shutdown of uWSGI and Nginx. Thanks to desaintmartin in this PR.
2018-02-04:
It's now possible to set the number of Nginx worker processes with the environment variable NGINX_WORKER_PROCESSES. Thanks to naktinis in this PR.
2018-01-14:
- There are now two Alpine based versions,
python2.7-alpine3.7andpython3.6-alpine3.7.
2017-12-10:
- Added support for
/app/prestart.shscript to run arbitrary code before starting the app (for example, Alembic - SQLAlchemy migrations). The documentation for the/app/prestart.shis in the main README. /appis part of thePYTHONPATHenvironment variable. That allows global imports from several places, easier Alembic integration, etc.
2017-12-08: Now you can configure which port the container should listen on, using the environment variable LISTEN_PORT thanks to tmshn in this PR.
2017-09-10: Updated examples and sample project to work with SPAs even when structuring the app as a package (with subdirectories).
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 runcommands, that allows running a package application while developing more easily.
2017-08-10: Many changes:
- New official image tags:
python3.6,python3.6-index,python.3.5,python3.5-index,python2.7andpython2.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
latestwill point to Python 3.6 and the other tags will be removed. - There were several improvements in the base image
tiangolo/uwsgi-nginxthat 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.htmldirectly:STATIC_INDEX - Set the max upload file size:
NGINX_MAX_UPLOAD - Set a custom
uwsgi.inifile (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
Dockerfilewith:
FROM tiangolo/uwsgi-nginx-flask:python3.6
COPY ./app /appand then customize with environment variables.