version: "3"

networks:
default:
driver: bridge
traefik:
internal: true

services:
traefik:
image: traefik:2.0
labels:
- "com.centurylinklabs.watchtower.enable=true"
networks:
- default
- traefik
ports:
- 80:80
- 443:443
restart: always
volumes:
- ./data/conf/traefik/acme.json:/acme.json
- ./data/conf/traefik/traefik.toml:/traefik.toml
- ./data/volumes/traefik/tmp:/tmp

mysite:
depends_on:
- traefik
image: mysitesimage
labels:
- "traefik.enable=true"
- "traefik.http.middlewares.mysite-https.redirectscheme.scheme=https"
- "traefik.http.routers.mysite-http.entrypoints=web"
- "traefik.http.routers.mysite-http.rule=Host(`mysitesdomain.com`)"
- "traefik.http.routers.mysite-http.middlewares=mysite-https@docker"
- "traefik.http.routers.mysite.entrypoints=web-secure"
- "traefik.http.routers.mysite.rule=Host(`mysitesdomain.com`)"
- "traefik.http.routers.mysite.tls=true"
- "traefik.http.routers.mysite.tls.certresolver=default"
networks:
- default
restart: always
volumes:
- ./data/volumes/mysite:/var/www/mysite/data

https://chriswiegman.com/2019/10/serving-your-docker-apps-with-https-an…