Introduction

FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.8+ based on standard Python type hints.

Prerequisites

  • a UNIX-like system (see WSL if you are using Windows), in order to use the Valyent CLI
  • a Valyent account, with a registered payment method (you can sign up here)
  • Python3 and installed on your machine

Installing the CLI

curl -L https://cli.valyent.cloud | sh

You can inspect the installation script here and the GitHub repository.

Authenticating

valyent auth login

Initializing the project

In the first place, we are going to install FastAPI dependencies. You can refer to the official documentation for more information.

pip install "fastapi[standard]"

Then, we can scaffold a new FastAPI project :

mkdir fastapi-app && cd fastapi-app && touch main.py

Make sure to create a requirements.txt file, in order to install the dependencies in the Docker image :

pip freeze > requirements.txt

In the main.py file, we can add the following code :

# main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
  return {"Hello": "World"}

Now, we can initialize the valyent.toml configuration file, that allows to link the local codebase, to a Valyent application :

valyent init

This command will ask you to select/create a project and an associated application.

Adding the Dockerfile

Let’s add a Dockerfile so that Valyent can build a Docker image for your application.

touch Dockerfile

We can fill it with the following Dockerfile (coming from here) :

# Stage 1: Builder
FROM python:3.13 AS builder

WORKDIR /code

# Install dependencies
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

# Stage 2: Runtime
FROM python:3.13-slim AS runtime

WORKDIR /code

# Copy only necessary files from the builder stage
COPY --from=builder /usr/local/lib/python3.13/site-packages /usr/local/lib/python3.13/site-packages
COPY --from=builder /usr/local/bin /usr/local/bin

# Copy the application code
COPY ./ /code/

CMD ["fastapi", "run", "--host", "0.0.0.0", "--port", "80"]

Deploy the project

To expose the application’s port, we need to set up a gateway (in this case, the port 80):

valyent gateways create

Then, we can deploy the application :

valyent deploy

Then, you can type the following:

valyent open

to test your FastAPI application in your browser.