Getting started with FastAPI and Docker

In this beginner’s guide, I will take you through the basic steps to get your first application running using FastAPI and Docker.
Table of contents
  • FastAPI
  • Docker
  • Building a FastAPI application with Docker
  • FastAPI
    FastAPI is a fast, modern, high performance, open source Python web framework used to build APIs with Python 3.6+. It is a minimalistic framework and quite new with a smaller community compared to Django and Flask but when it comes to performance, it is the fastest by far. It supports asynchronous programming, which is a plus. To learn more about fastAPI, visit their official docs here
    Docker
    Docker is a containerization platform. It enables you to build, run and ship your application, packages your code and all its dependencies enabling your application to run consistently across different computing environments.
    A container is a virtualized environment for running an application. It includes everything needed for an application to run.
    Docker uses the client-server architecture. The client component communicates with the server (the Docker Engine) using a RESTful API. The Docker Engine builds and runs the Docker containers.
    Building your first FastAPI and Docker application
    In this section, we are going to dockerize a simple python application.
    Requirements
  • Linux or Mac computer. You can also use Windows but some commands are different.
  • Python 3.6+
  • We shall start by installing a virtual environment in which we will create our application.
    Install a virtual environment - virtualenv
    pip3 install virtualenv
    Navigate to a directory of choice and create the virtual environment.
    python3 -m virtualenv hello-app-env
    Activate the virtual environment
    source hello-app-env/bin/activate
    Change directory into the virtual environment created and install fasAPI and uvicorn. We'll use uvicorn to run our application.
    pip3 install fastapi uvicorn
    Create a requirements.txt file. This lists all the packages required by our application.
    pip3 freeze > requirements.txt
    Now that we are all set up. Let's create a python file main.py in your src directory and add the following code:
    /src/main.py
    from fastapi import FastAPI
    
    app = fastAPI()
    
    @app.get("/")
    def index():
        return {"Greeting": "Hello World!"}
    Note: use @app.post() if you're accepting sensitive data from the user like usernames and passwords.
    Create a Docker file called Dockerfile
    FROM python:3.9
    
    COPY ./src /app/src
    COPY requirements.txt /app
    
    WORKDIR /app
    
    RUN pip3 install -r requirements.txt
    
    EXPOSE 8000
    
    CMD ["uvicorn", "main:app", "--host=0.0.0.0", "--reload"]
    Note: --reload will automatically update changes when made so you won't have to re-run the container.
    To build your Docker image, open your terminal and enter:
    docker build -t hello-world-env .
    Run the docker image
    docker run -p 8000:8000 --name hello-app hello-world-env
    Note: In this case, hello-app is the name I'm giving to the container, hello-world-env is the image
    To verify that the image and container exist, run these commands in your terminal. The directory you are in does not matter:
    docker image ls
    docker container ls
    The docker run command will spin up your local server and you can view your results through this URL http://localhost:8000 or http://127.0.0.1:8000 ``
    Conclusion
    As you can see, it's quite easy to create an application with FastAPI and also dockerize it. And as you know by now, you learn code best by trying it out yourself through building stuff. So try and create another application and see if you can have something visible at the end.

    31

    This website collects cookies to deliver better user experience

    Getting started with FastAPI and Docker