DEV Community

Cover image for Deploy & Secure FastAPI with Docker on DigitalOcean (Step-by-Step)
Firdevs Akbayır
Firdevs Akbayır

Posted on • Edited on

Deploy & Secure FastAPI with Docker on DigitalOcean (Step-by-Step)

FastAPI is an insanely fast Python framework for building APIs — but getting it to production securely is where many developers struggle.
In this guide, we’ll containerize a FastAPI app, run it behind Nginx, enable HTTPS with Let’s Encrypt, and deploy it to a DigitalOcean Droplet — production-ready from day one.

By the end, you’ll have:

  • Portable deployment with Docker
  • Secure communication (HTTPS + Nginx reverse proxy)
  • Easy scaling for high-traffic apps

High-Level Steps

  • Create & SSH into a DigitalOcean Droplet
  • Install Docker & Docker Compose
  • Write a minimal FastAPI app (main.py)
  • Create Dockerfile for containerization
  • Add Nginx reverse proxy via docker-compose.yml
  • Configure DNS & domain
  • Install Certbot & enable HTTPS
  • Run with Gunicorn for production

Minimal Dockerfile

FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Enter fullscreen mode Exit fullscreen mode

docker-compose.yml with Nginx

version: "3.8"
services:
  app:
    build: .
    container_name: fastapi_app
    restart: unless-stopped
    expose:
      - "8000"

  nginx:
    image: nginx:alpine
    container_name: nginx_proxy
    depends_on:
      - app
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
      - certbot-etc:/etc/letsencrypt
      - certbot-var:/var/www/certbot
    restart: unless-stopped

volumes:
  certbot-etc:
  certbot-var:
Enter fullscreen mode Exit fullscreen mode

Full Tutorial

This is the condensed version.
For the full guide — including Nginx config, SSL setup, firewall rules, and production tweaks — read it here:

Question for you: How do you deploy your Python APIs in production? Share your stack in the comments!

Top comments (0)