version: '3' networks: gateway: external: true name: gateway backend: internal: true services: mongo: image: mongo tty: true volumes: - ./data/mongo:/data/db restart: on-failure networks: - backend portal: image: openbikesensor-portal build: context: ./source volumes: - ./data/api-data:/data - ./config/config.py:/opt/obs/api/config.py - ./data/tiles/:/tiles restart: on-failure labels: - traefik.http.routers.portal.rule=Host(`portal.example.com`) - traefik.http.routers.portal.entrypoints=websecure - traefik.http.routers.portal.tls=true - traefik.http.routers.portal.tls.certresolver=leresolver - traefik.docker.network=gateway networks: - gateway - backend traefik: image: traefik:2.4.8 restart: always ports: - "80:80" - "443:443" # The Web UI (enabled by [api] in traefik.toml) # - "8080:8080" volumes: - /var/run/docker.sock:/var/run/docker.sock - ./config/traefik.toml:/traefik.toml - ./config/usersfile:/usersfile - ./config/acme:/acme networks: - gateway labels: # global redirect from http to https - "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)" - "traefik.http.routers.http-catchall.entrypoints=web" # Define middlewares to be used - "traefik.http.routers.http-catchall.middlewares=redirect-http-to-https" # Configure middlewares - "traefik.http.middlewares.redirect-http-to-https.redirectscheme.scheme=https" # Show Traefik Dashboard. Enable the dashboard in traefik.toml if you use these. # - "traefik.http.routers.traefik.rule=Host(`traefik.example.com`)" # - "traefik.http.routers.traefik.service=api@internal" # - "traefik.http.routers.traefik.tls=true" # - "traefik.http.routers.traefik.entrypoints=websecure" # - "traefik.http.routers.traefik.tls.certresolver=leresolver" # - "traefik.http.routers.traefik.middlewares=basic-auth" # - "traefik.http.middlewares.basic-auth.basicauth.usersfile=/usersfile"