Skip to content

FastAPI CRUD API with Docker, deployed on AWS EC2. Includes setup, deployment guide, and troubleshooting steps

Notifications You must be signed in to change notification settings

llanlan1/fastapiCrud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastAPI CRUD API Deployment on EC2 with Docker

This guide documents the steps to deploy a FastAPI CRUD API on an EC2 instance using Docker, including troubleshooting issues encountered along the way.

Prerequisites

  • AWS account with access to EC2
  • Docker installed on your local machine
  • Basic understanding of FastAPI
  • SSH access to your EC2 instance
  • Python installed locally for development

Step 1: Set Up Project Structure

Create a new directory for your FastAPI project:

mkdir fastapi-crud
cd fastapi-crud

Inside this directory, create the following structure:

fastapi-crud/
│-- app/
│   │-- main.py  # Entry point of the FastAPI app
│   │-- models.py  # Database models
│   │-- database.py  # Database connection
│   │-- schemas.py  # Pydantic models for request validation
│   │-- crud.py  # CRUD functions
│   │-- routers/
│   │   │-- items.py  # API routes for handling CRUD
│-- requirements.txt  # Dependencies
│-- Dockerfile  # Docker configuration
│-- .env  # Environment variables
│-- README.md  # Documentation

The file contents can be copied from this repo.

Step 2: Set Up an EC2 Instance

  1. Log in to your AWS console and navigate to EC2.
  2. Launch a new instance using an Amazon Linux 2 or Ubuntu AMI.
  3. Select an instance type (e.g., t2.micro for free tier users).
  4. Configure security group:
    • Allow SSH (port 22) from your IP.
    • Allow HTTP (port 80) and/or HTTPS (port 443).
    • Allow your FastAPI app port (e.g., 8000).
  5. Create or use an existing key pair for SSH access.
  6. Launch the instance and note its public IP address.

Step 3: Connect to Your EC2 Instance

ssh -i your-key.pem ec2-user@your-ec2-ip

For Ubuntu:

ssh -i your-key.pem ubuntu@your-ec2-ip

Step 4: Install Docker on EC2

sudo yum update -y  # For Amazon Linux
sudo apt update -y  # For Ubuntu
sudo yum install -y docker  # Amazon Linux
sudo apt install -y docker.io  # Ubuntu
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker ec2-user  # Add user to Docker group

Logout and log back in to apply group changes.

Step 5: Copy Your FastAPI Project to EC2

Use SCP (or Git if you have a repo):

scp -i your-key.pem -r fastapi-crud ec2-user@your-ec2-ip:~

Step 6: Build & Run the Docker Container on EC2

cd fastapi-crud
docker build -t fastapi-app .
docker run -d -p 8000:8000 --restart always fastapi-app

Step 7: Allow Inbound Traffic on EC2 (Security Group Settings)

  1. Go to AWS EC2 Dashboard → Security Groups.
  2. Add an Inbound Rule for port 8000 with Source: 0.0.0.0/0 (or your IP for security).

Step 8: Access Your FastAPI App

Visit in your browser:

http://your-ec2-public-ip:8000

Visit FastAPI Swagger UI:

http://your-ec2-public-ip:8000/docs

Troubleshooting Steps

  • Cannot access FastAPI from browser:
    • Check if the security group allows traffic on port 8000.
    • Run docker ps to ensure the container is running.
    • Inspect logs with docker logs <container_id>.
  • Docker command not found:
    • Ensure Docker is installed and running (sudo systemctl start docker).
  • Permissions issue with Docker:
    • Run sudo usermod -aG docker $USER and restart your session.

Conclusion

Your FastAPI CRUD API is now running on an EC2 instance using Docker! 🎉

About

FastAPI CRUD API with Docker, deployed on AWS EC2. Includes setup, deployment guide, and troubleshooting steps

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published