mirror of
https://github.com/zix99/traefik-lazyload.git
synced 2025-12-21 13:23:04 +01:00
Some docs and cleanup
This commit is contained in:
96
README.md
96
README.md
@@ -1,12 +1,104 @@
|
||||
# traefik-lazyloader
|
||||
|
||||
Takes advantage of traefik's router priority to proxy to this small application that will manage
|
||||
starting/stopping containers to save resources.
|
||||
This small app will automatically start and stop docker containers based on access, for instance,
|
||||
via traefik.
|
||||
|
||||
## How it Works
|
||||
|
||||
It works by acting as the fallback-route for the containers. For instance, if you have
|
||||
`example.com` as a container you want to lazy-load, you would add the container, as well
|
||||
as this lazyloader that would act as a lower-priority router for the same domain. If the
|
||||
host is accessed, the lazyloader will work to boot up the container and redirect the user
|
||||
as soon as it's up.
|
||||
|
||||
It then monitors the container's network interface. If the network is idle for X minutes, it
|
||||
will stop the container.
|
||||
|
||||
## Quick-Start
|
||||
|
||||
### docker-compose
|
||||
```yaml
|
||||
version: '3.5'
|
||||
|
||||
services:
|
||||
reverse-proxy:
|
||||
image: traefik:v2.4
|
||||
command:
|
||||
- --api.insecure
|
||||
- --providers.docker
|
||||
- --providers.docker.defaultRule=Host(`{{.Name}}.example.com`)
|
||||
- --entryPoints.web.address=:80
|
||||
- --entryPoints.web.forwardedHeaders.insecure
|
||||
- --providers.docker.exposedByDefault=false
|
||||
restart: always
|
||||
ports:
|
||||
- "80:80" # The HTTP port
|
||||
- "8080:8080" # The Web UI (enabled by --api)
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
|
||||
|
||||
lazyloader:
|
||||
build: .
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- "traefik.http.routers.lazyload.priority=-100" # Lower router priority. Would only be hit if the app isn't running
|
||||
- "traefik.http.routers.lazyload.rule=Host(`whoami.example.com`, `lazyloader.example.com`)"
|
||||
environment:
|
||||
TLL_STOPATBOOT: true # Stop all lazyloaded containers at boot (great for an example)
|
||||
TLL_STATUSHOST: lazyloader.example.com # This hostname will display a status page. Disabled by default
|
||||
networks:
|
||||
- traefik-bridge
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock # Must access docker
|
||||
|
||||
whoami:
|
||||
image: containous/whoami
|
||||
networks:
|
||||
- traefik-bridge
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- "traefik.http.routers.lazywhoami.rule=Host(`whoami.example.com`)"
|
||||
- lazyloader=true
|
||||
- lazyloader.stopdelay=30s # Overrides the default
|
||||
|
||||
networks:
|
||||
traefik-bridge:
|
||||
external: true
|
||||
name: traefik-bridge
|
||||
```
|
||||
|
||||
You can run `docker-compose up` on the above for a quick-start. You will need to alter the domains as needed.
|
||||
|
||||
## Config
|
||||
|
||||
Configuration uses [viper]() and can be specified by either overwriting the `config.yaml` file or
|
||||
via environment variables with the `TLL_` prefix (Traefik lazy loader)
|
||||
|
||||
```yaml
|
||||
# What port to listen on
|
||||
listen: :8080
|
||||
|
||||
# If set, when access via this hostname, will display status page
|
||||
statushost: ""
|
||||
|
||||
# Enable debug logging
|
||||
verbose: false
|
||||
|
||||
# if true, will stop all running tagged containers when the lazyloader starts
|
||||
stopatboot: false
|
||||
|
||||
# which splash-page asset to use
|
||||
splash: splash.html
|
||||
|
||||
# Container defaults
|
||||
stopdelay: 5m # How long to wait before stopping container
|
||||
pollfreq: 10s # How often to check
|
||||
|
||||
# This will be the label-prefix to look at settings on a container
|
||||
# usually won't need to change (only if running multiple instances)
|
||||
labelprefix: lazyloader
|
||||
```
|
||||
|
||||
## Labels
|
||||
|
||||
* `lazyloader=true` -- (Required) Add to containers that should be managed
|
||||
|
||||
Reference in New Issue
Block a user