services: fitness: build: . container_name: fitness-tracker restart: unless-stopped environment: # DB file inside container - DATABASE_URL=/data/fitness.db volumes: # Host folder -> container /data # On host, your db will be: ./fitness-data/fitness.db - ./fitness-data:/data # ports: # For quick testing; in production you'd put Traefik in front instead # - "8080:8080" labels: - "traefik.enable=true" # Public domain - "traefik.http.routers.fitness.rule=Host(`fitness.rozic-dev.com`)" # Listen on HTTP & HTTPS - "traefik.http.routers.fitness.entrypoints=web,websecure" # Force HTTPS using your GLOBAL redirect middleware - "traefik.http.routers.fitness.middlewares=redirect-to-https, fitness-auth" # TLS + Let's Encrypt - "traefik.http.routers.fitness.tls=true" - "traefik.http.routers.fitness.tls.certresolver=letsencrypt" # App internal port - "traefik.http.services.fitness.loadbalancer.server.port=8080" # - "traefik.http.routers.traefik.middlewares=fitness-auth" #- "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$8EVjn/nj$$GiLUZqcbueTFeD23SuB6x0" # admin:admin123 #- "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$apr1$yGKxPD8U$z4eeZaKNzoASEpr2yh4wQ" # admin:admin123 - "traefik.http.middlewares.fitness-auth.basicauth.users=Dejan:$$apr1$$F5Y8CeQ1$$C2jX95nwyeJAjhtGxvnOJ/" # admin:admin123 networks: - traefik_default networks: traefik_default: external: true