mirror of
https://github.com/fastapi/full-stack-fastapi-template.git
synced 2026-09-21 05:12:48 +00:00
62 lines
2.3 KiB
YAML
62 lines
2.3 KiB
YAML
services:
|
|
|
|
proxy:
|
|
restart: always
|
|
ports:
|
|
# Listen on port 80, default for HTTP, necessary to redirect to HTTPS
|
|
- "80:80"
|
|
# Listen on port 443, default for HTTPS
|
|
- "443:443"
|
|
volumes:
|
|
# Mount the volume to store the certificates
|
|
- traefik-certificates:/certificates
|
|
command:
|
|
# Enable Docker in Traefik, so that it reads labels from Docker services
|
|
- --providers.docker
|
|
# Do not expose all Docker services, only the ones explicitly exposed
|
|
- --providers.docker.exposedbydefault=false
|
|
# Create an entrypoint "http" listening on port 80
|
|
- --entrypoints.http.address=:80
|
|
# Redirect all HTTP traffic to HTTPS
|
|
- --entrypoints.http.http.redirections.entrypoint.to=https
|
|
- --entrypoints.http.http.redirections.entrypoint.scheme=https
|
|
# Create an entrypoint "https" listening on port 443
|
|
- --entrypoints.https.address=:443
|
|
# Store the Let's Encrypt certificates in the mounted volume
|
|
- --certificatesresolvers.le.acme.storage=/certificates/acme.json
|
|
# Use the TLS Challenge for Let's Encrypt
|
|
- --certificatesresolvers.le.acme.tlschallenge=true
|
|
# Enable the access log, with HTTP requests
|
|
- --accesslog
|
|
# Enable the Traefik log, for configurations and errors
|
|
- --log
|
|
|
|
db:
|
|
restart: always
|
|
|
|
adminer:
|
|
restart: always
|
|
labels:
|
|
# Route HTTPS traffic for the Adminer subdomain
|
|
- traefik.http.routers.adminer-https.rule=Host(`adminer.${DOMAIN:?Variable not set}`)
|
|
- traefik.http.routers.adminer-https.entrypoints=https
|
|
- traefik.http.routers.adminer-https.tls=true
|
|
# Use the Let's Encrypt resolver
|
|
- traefik.http.routers.adminer-https.tls.certresolver=le
|
|
|
|
backend:
|
|
restart: always
|
|
environment:
|
|
FRONTEND_HOST: https://${DOMAIN:?Variable not set}
|
|
labels:
|
|
# Route HTTPS traffic for this domain
|
|
- traefik.http.routers.backend-https.rule=Host(`${DOMAIN:?Variable not set}`)
|
|
- traefik.http.routers.backend-https.entrypoints=https
|
|
- traefik.http.routers.backend-https.tls=true
|
|
# Use the Let's Encrypt resolver
|
|
- traefik.http.routers.backend-https.tls.certresolver=le
|
|
|
|
volumes:
|
|
# Create a volume to store the certificates, even if the container is recreated
|
|
traefik-certificates:
|