Dockerizing a FastAPI app is a great way to streamline your development process and ensure consistency across different environments. In this tutorial, we will walk you through the steps to Dockerize a FastAPI app using the Python framework inside a Docker container.
Step 1: Set up your FastAPI app
Before you can Dockerize your FastAPI app, you need to have a working FastAPI app. If you don’t have one yet, you can create a simple FastAPI app by following the FastAPI documentation. Make sure your FastAPI app is working correctly before proceeding to the next steps.
Step 2: Create a Dockerfile
The next step is to create a Dockerfile in the root directory of your FastAPI app. A Dockerfile is a text file that contains all the commands needed to build an image for your Docker container. Here is a sample Dockerfile for Dockerizing a FastAPI app using the Python framework:
# Use an official Python runtime as a base image
FROM python:3.9-slim
# Set the working directory in the container
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME FastAPI-App
# Run app.py when the container launches
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
In the Dockerfile above, we use the official Python runtime as the base image, set the working directory to /app, copy the contents of the current directory into the container, install the packages specified in the requirements.txt file, expose port 80, define an environment variable, and run the FastAPI app using uvicorn.
Step 3: Create a requirements.txt file
Next, you need to create a requirements.txt file in the root directory of your FastAPI app. This file should list all the Python packages that your FastAPI app depends on. Here is an example requirements.txt file for a simple FastAPI app:
“`requirements.txt
fastapi
uvicorn
Step 4: Build the Docker image
Once you have created the Dockerfile and requirements.txt file, you can build the Docker image for your FastAPI app by running the following command in the root directory of your FastAPI app:
```bash
docker build -t fastapi-app .
This command will build the Docker image using the Dockerfile in the current directory and tag it with the name fastapi-app.
Step 5: Run the Docker container
After building the Docker image, you can run the Docker container for your FastAPI app by running the following command:
docker run -d -p 80:80 fastapi-app
This command will run the Docker container in detached mode, map port 80 of the host machine to port 80 of the container, and start the FastAPI app inside the Docker container.
Step 6: Test the FastAPI app
To test your FastAPI app running inside the Docker container, open a web browser and navigate to http://localhost:80/docs. You should see the interactive API documentation generated by FastAPI, allowing you to test the different endpoints of your FastAPI app.
That’s it! You have successfully Dockerized your FastAPI app using the Python framework inside a Docker container. Dockerizing your FastAPI app will make it easier to deploy and scale your app in different environments while ensuring consistency and reproducibility.
Hey man, thanks a lot! You saved my life.
how we can attain auto scaling with out giving commands
great video! new subscriber
such a wonderful and thorough video ! Thanks
Hey , When I run my code using docker bash it says that This site can’t be reached 0.0.0.0 took too long to respond.
My command is uvicorn app:app –host=0.0.0.0 as I am running my faspai file app
Good video I like it.
Very clean and use full tutorial. Congratulations.
Just now watched fastapi video 😂😂😂
when your laravel upgrade course launch
Great! There is another python web framework called LiteStar, it's faster than fastapi and well documented.