This guide aims to deploy a web app based on FastAPI and Traefik running in docker hosted on Digital Ocean cloud provider.
What we need?
sudo apt update
sudo apt install certbot
apt install python3-certbot-dns-digitalocean
touch ~/certbot-creds.ini
chmod go-rwx ~/certbot-creds.ini
vi ~/certbot-creds.ini
Add content in file certbot-creds.ini
dns_digitalocean_token = your_digitalocean_access_token
See: How to Create a Personal Access Token
certbot certonly --dns-digitalocean --dns-digitalocean-credentials ~/certbot-creds.ini -d <domain> -d <subdomain.domain>
Example with
- domain:pyapps.site
- subdomain.domain:pyapi.pyapps.site
certbot certonly --dns-digitalocean --dns-digitalocean-credentials ~/certbot-creds.ini -d pyapps.site -d pyapi.pyapps.site
List network before
docker network ls
NETWORK ID NAME DRIVER SCOPE
b56ecc5b5533 bridge bridge local
689d7cc4d8d3 host host local
91cd5c956f2b none null local
docker network create traefik-public
List network after
docker network ls
NETWORK ID NAME DRIVER SCOPE
b56ecc5b5533 bridge bridge local
689d7cc4d8d3 host host local
91cd5c956f2b none null local
601eae803e12 traefik-public bridge local
export USERNAME=admin
export PASSWORD=password
export HASHED_PASSWORD=$(openssl passwd -apr1 $PASSWORD)
docker-compose -f docker-compose.traefik.yml up -d
List images
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
traefik v2.3 ddb0268e5b5f 13 months ago 92.4MB
list containers
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c4a2f49c378 traefik:v2.3 "/entrypoint.sh --pr…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp arnaud-dev_traefik_1
docker-compose -f docker-compose.yml up -d
list containers
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a66672f05de arnaud-dev_streamlit "streamlit run app/l…" 3 minutes ago Up 3 minutes arnaud-dev_streamlit_1
8f4b7d72cf91 arnaud-dev_backend "/start.sh" 3 minutes ago Up 3 minutes 80/tcp arnaud-dev_backend_1
885f16a0b4bc arnaud-dev_panel "panel serve --show …" 3 minutes ago Up 3 minutes arnaud-dev_panel_1
0c4a2f49c378 traefik:v2.3 "/entrypoint.sh --pr…" 12 minutes ago Up 12 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp arnaud-dev_traefik_1