Skip to content

Commit

Permalink
✨ Add support for Python 3.10 (#99)
Browse files Browse the repository at this point in the history
Co-authored-by: Chris Griffith <chris@cdgriffith.com>
  • Loading branch information
tiangolo and cdgriffith committed Nov 25, 2022
1 parent 5e46d9d commit 8875d10
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 7 deletions.
6 changes: 5 additions & 1 deletion .github/workflows/deploy.yml
Expand Up @@ -11,7 +11,9 @@ jobs:
matrix:
image:
- name: latest
python_version: "3.9"
python_version: "3.10"
- name: python3.10
python_version: "3.10"
- name: python3.9
python_version: "3.9"
- name: python3.8
Expand All @@ -20,6 +22,8 @@ jobs:
python_version: "3.7"
- name: python3.6
python_version: "3.6"
- name: python3.10-slim
python_version: "3.10"
- name: python3.9-slim
python_version: "3.9"
- name: python3.8-slim
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/test.yml
Expand Up @@ -11,7 +11,9 @@ jobs:
matrix:
image:
- name: latest
python_version: "3.9"
python_version: "3.10"
- name: python3.10
python_version: "3.10"
- name: python3.9
python_version: "3.9"
- name: python3.8
Expand All @@ -20,6 +22,8 @@ jobs:
python_version: "3.7"
- name: python3.6
python_version: "3.6"
- name: python3.10-slim
python_version: "3.10"
- name: python3.9-slim
python_version: "3.9"
- name: python3.8-slim
Expand Down
8 changes: 5 additions & 3 deletions README.md
Expand Up @@ -2,10 +2,12 @@

## Supported tags and respective `Dockerfile` links

* [`python3.9`, `latest` _(Dockerfile)_](https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/master/docker-images/python3.9.dockerfile)
* [`python3.10`, `latest` _(Dockerfile)_](https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/master/docker-images/python3.10.dockerfile)
* [`python3.9`, _(Dockerfile)_](https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/master/docker-images/python3.9.dockerfile)
* [`python3.8`, _(Dockerfile)_](https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/master/docker-images/python3.8.dockerfile)
* [`python3.7`, _(Dockerfile)_](https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/master/docker-images/python3.7.dockerfile)
* [`python3.6` _(Dockerfile)_](https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/master/docker-images/python3.6.dockerfile)
* [`python3.10-slim` _(Dockerfile)_](https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/master/docker-images/python3.10-slim.dockerfile)
* [`python3.9-slim` _(Dockerfile)_](https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/master/docker-images/python3.9-slim.dockerfile)
* [`python3.8-slim` _(Dockerfile)_](https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/master/docker-images/python3.8-slim.dockerfile)

Expand Down Expand Up @@ -140,7 +142,7 @@ You can use this image as a base image for other images.
Assuming you have a file `requirements.txt`, you could have a `Dockerfile` like this:

```Dockerfile
FROM tiangolo/uvicorn-gunicorn:python3.9
FROM tiangolo/uvicorn-gunicorn:python3.10

COPY ./requirements.txt /app/requirements.txt

Expand Down Expand Up @@ -198,7 +200,7 @@ COPY ./pyproject.toml ./poetry.lock* /tmp/

RUN poetry export -f requirements.txt --output requirements.txt --without-hashes

FROM tiangolo/uvicorn-gunicorn:python3.9
FROM tiangolo/uvicorn-gunicorn:python3.10

COPY --from=requirements-stage /tmp/requirements.txt /app/requirements.txt

Expand Down
25 changes: 25 additions & 0 deletions docker-images/python3.10-slim.dockerfile
@@ -0,0 +1,25 @@
FROM python:3.10-slim

LABEL maintainer="Sebastian Ramirez <tiangolo@gmail.com>"

COPY requirements.txt /tmp/requirements.txt
RUN pip install --no-cache-dir -r /tmp/requirements.txt

COPY ./start.sh /start.sh
RUN chmod +x /start.sh

COPY ./gunicorn_conf.py /gunicorn_conf.py

COPY ./start-reload.sh /start-reload.sh
RUN chmod +x /start-reload.sh

COPY ./app /app
WORKDIR /app/

ENV PYTHONPATH=/app

EXPOSE 80

# Run the start script, it will check for an /app/prestart.sh script (e.g. for migrations)
# And then will start Gunicorn with Uvicorn
CMD ["/start.sh"]
25 changes: 25 additions & 0 deletions docker-images/python3.10.dockerfile
@@ -0,0 +1,25 @@
FROM python:3.10

LABEL maintainer="Sebastian Ramirez <tiangolo@gmail.com>"

COPY requirements.txt /tmp/requirements.txt
RUN pip install --no-cache-dir -r /tmp/requirements.txt

COPY ./start.sh /start.sh
RUN chmod +x /start.sh

COPY ./gunicorn_conf.py /gunicorn_conf.py

COPY ./start-reload.sh /start-reload.sh
RUN chmod +x /start-reload.sh

COPY ./app /app
WORKDIR /app/

ENV PYTHONPATH=/app

EXPOSE 80

# Run the start script, it will check for an /app/prestart.sh script (e.g. for migrations)
# And then will start Gunicorn with Uvicorn
CMD ["/start.sh"]
2 changes: 1 addition & 1 deletion scripts/build.sh
Expand Up @@ -6,7 +6,7 @@ use_tag="tiangolo/uvicorn-gunicorn:$NAME"
DOCKERFILE="$NAME"

if [ "$NAME" == "latest" ] ; then
DOCKERFILE="python3.9"
DOCKERFILE="python3.10"
fi

docker build -t "$use_tag" --file "./docker-images/${DOCKERFILE}.dockerfile" "./docker-images/"
4 changes: 3 additions & 1 deletion scripts/process_all.py
Expand Up @@ -3,11 +3,13 @@
import sys

environments = [
{"NAME": "latest", "PYTHON_VERSION": "3.9"},
{"NAME": "latest", "PYTHON_VERSION": "3.10"},
{"NAME": "python3.10", "PYTHON_VERSION": "3.10"},
{"NAME": "python3.9", "PYTHON_VERSION": "3.9"},
{"NAME": "python3.8", "PYTHON_VERSION": "3.8"},
{"NAME": "python3.7", "PYTHON_VERSION": "3.7"},
{"NAME": "python3.6", "PYTHON_VERSION": "3.6"},
{"NAME": "python3.10-slim", "PYTHON_VERSION": "3.10"},
{"NAME": "python3.9-slim", "PYTHON_VERSION": "3.9"},
{"NAME": "python3.8-slim", "PYTHON_VERSION": "3.8"},
{"NAME": "python3.9-alpine3.14", "PYTHON_VERSION": "3.9"},
Expand Down

0 comments on commit 8875d10

Please sign in to comment.