Compare commits

..

1 Commits
swarm ... main

Author SHA1 Message Date
0220de3650
Require explicit VERSION in docker-compose files 2024-10-13 21:31:15 -04:00
4 changed files with 13 additions and 51 deletions

View File

@ -6,7 +6,9 @@ Encrypt. While similar, the docker-compose files available here cater to
different use cases for deploying Traefik. different use cases for deploying Traefik.
## Add services to Traefik ## Add services to Traefik
1. Define the external traefik network on the top-level networks key 1. Define the external traefik network on the top-level networks key
``` ```
networks: networks:
traefik: traefik:
@ -14,12 +16,14 @@ networks:
``` ```
2. Attach your web container to Traefik's network via the service-level `networks` key 2. Attach your web container to Traefik's network via the service-level `networks` key
``` ```
networks: networks:
- traefik - traefik
``` ```
3. Define routing for Traefik in labels, replacing "examplerouter" with something unique 3. Define routing for Traefik in labels, replacing "examplerouter" with something unique
``` ```
labels: labels:
traefik.http.routers.examplerouter.rule: Host(`www.example.org`) traefik.http.routers.examplerouter.rule: Host(`www.example.org`)
@ -30,30 +34,35 @@ networks:
``` ```
## Variables ## Variables
Here's a brief explanation of the variables used in the docker-compose files: Here's a brief explanation of the variables used in the docker-compose files:
### Docker Settings ### Docker Settings
- `IMAGE`: The name of the Docker image (default: `traefik`). - `IMAGE`: The name of the Docker image (default: `traefik`).
- `VERSION`: The tag of the Docker image (default: `latest`). - `VERSION`: The tag of the Docker image (required, no default).
- `NAME`: The name assigned to the created container (default: `traefik`). - `NAME`: The name assigned to the created container (default: `traefik`).
### Traefik Settings ### Traefik Settings
- `DASHBOARD`: Enable(=true) or disable(=false) the Traefik API dashboard (default: `false`). - `DASHBOARD`: Enable(=true) or disable(=false) the Traefik API dashboard (default: `false`).
- `DOMAIN`: The domain name where Traefik's dashboard is accessible (default: `traefik.local.krislamo.org`). - `DOMAIN`: The domain name where Traefik's dashboard is accessible (default: `traefik.local.krislamo.org`).
- `ENTRYPOINT`: The entry point for the dashboard (default: `local`). - `ENTRYPOINT`: The entry point for the dashboard (default: `local`).
- `EXPOSED_BY_DEFAULT`: Expose Docker containers by default without needing specific labels (default: `false`). - `EXPOSED_BY_DEFAULT`: Expose Docker containers by default without needing specific labels (default: `false`).
### Network Settings ### Network Settings
- `NETWORK`: The Docker network to be used (default: `traefik`). - `NETWORK`: The Docker network to be used (default: `traefik`).
- `WEB_PORT`: Binding for the regular HTTP traffic (defaults vary). - `WEB_PORT`: Binding for the regular HTTP traffic (defaults vary).
- `WEBSECURE_PORT`: Binding for HTTPS traffic (default: `0.0.0.0:443:443`, only on HTTPS version). - `WEBSECURE_PORT`: Binding for HTTPS traffic (default: `0.0.0.0:443:443`, only on HTTPS version).
- `LOCAL_PORT`: Binding for local HTTPS traffic (default: `127.0.0.1:8443:8443`). - `LOCAL_PORT`: Binding for local HTTPS traffic (default: `127.0.0.1:8443:8443`).
### Other Settings ### Other Settings
- `LOG_LEVEL`: Logging level (default: `ERROR`). - `LOG_LEVEL`: Logging level (default: `ERROR`).
- `DEBUG`: Enable(=true) or turn off(=false) API debugging (default: `false`). - `DEBUG`: Enable(=true) or turn off(=false) API debugging (default: `false`).
## License ## License
This project is released under the 0BSD license, which allows for unrestricted This project is released under the 0BSD license, which allows for unrestricted
use, modification, and distribution. use, modification, and distribution.

View File

@ -7,7 +7,7 @@ networks:
services: services:
traefik: traefik:
image: "${IMAGE:-traefik}:${VERSION:-latest}" image: "${IMAGE:-traefik}:${VERSION:?}"
container_name: "${NAME:-traefik}" container_name: "${NAME:-traefik}"
command: command:
- --providers.docker=true - --providers.docker=true

View File

@ -1,47 +0,0 @@
version: '3.8'
volumes:
traefik:
networks:
traefik:
name: traefik
services:
traefik:
image: "${IMAGE:-traefik}:${VERSION:-latest}"
command:
- --providers.docker=true
- --providers.docker.swarmMode=true
- --providers.docker.exposedbydefault=${EXPOSED_BY_DEFAULT:-false}
- --api.dashboard=${DASHBOARD:-true}
- --api.debug=${DEBUG:-false}
- --log.level=${LOG_LEVEL:-ERROR}
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.web.http.redirections.entrypoint.to=websecure
- --entrypoints.web.http.redirections.entrypoint.scheme=https
- --entrypoints.web.http.redirections.entrypoint.permanent=true
ports:
- "${WEB_PORT:-0.0.0.0:80:80}"
- "${WEBSECURE_PORT:-0.0.0.0:443:443}"
networks:
- traefik
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- "traefik:/etc/traefik"
deploy:
mode: global
placement:
constraints:
- node.role == manager
labels:
- "traefik.http.routers.${ROUTER:-traefik}.rule=Host(`${DOMAIN:-traefik.local.krislamo.org}`)"
- "traefik.http.routers.${ROUTER:-traefik}.service=api@internal"
- "traefik.http.routers.${ROUTER:-traefik}.entrypoints=${ENTRYPOINT:-websecure}"
- "traefik.http.routers.${ROUTER:-traefik}.tls=${ENABLE_TLS:-true}"
- "traefik.http.services.${SERVICE:-traefik}.loadbalancer.server.port=80"
- "traefik.http.middlewares.internalonly.ipwhitelist.sourcerange=127.0.0.1/32"
- "traefik.http.routers.${ROUTER:-traefik}.middlewares=internalonly"
- "traefik.docker.network=${NETWORK:-traefik}"
- "traefik.enable=${ENABLE:-true}"

View File

@ -7,7 +7,7 @@ networks:
services: services:
traefik: traefik:
image: "${IMAGE:-traefik}:${VERSION:-latest}" image: "${IMAGE:-traefik}:${VERSION:?}"
container_name: "${NAME:-traefik}" container_name: "${NAME:-traefik}"
command: command:
- --providers.docker=true - --providers.docker=true