Hi,
I want to deploy netbox on a docker swarm cluster.
I can get it up and running but looks like Traefik is created 3 routes although only 1 container has the labels fpor traefik.
My compose file looks like this:
services:
# NetBox frontend
netbox: &netbox
image: docker.io/netboxcommunity/netbox:${VERSION-v4.2-3.2.0}
deploy:
replicas: 1
placement:
constraints:
- node.role == worker # soll auf einem Worker-Knoten laufen
labels:
- "traefik.enable=true"
- "traefik.http.routers.netbox.rule=Host(`netbox.MYDOMAIN`)"
- "traefik.http.routers.netbox.entrypoints=websecure"
- "traefik.http.routers.netbox.tls.certresolver=cloudflare"
- "traefik.http.services.netbox.loadbalancer.server.port=8080"
- "traefik.docker.network=traefik-net"
environment:
CORS_ORIGIN_ALLOW_ALL: 1
DB_HOST: postgres
DB_NAME: netbox
DB_PASSWORD: MYPASSWORD
DB_USER: netbox
EMAIL_FROM: netbox@bar.com
EMAIL_PASSWORD:
EMAIL_PORT: 25
EMAIL_SERVER: localhost
EMAIL_SSL_CERTFILE:
EMAIL_SSL_KEYFILE:
EMAIL_TIMEOUT: 5
EMAIL_USERNAME: netbox
# EMAIL_USE_SSL and EMAIL_USE_TLS are mutually exclusive, i.e. they can't both be `true`!
EMAIL_USE_SSL: 0
EMAIL_USE_TLS: 1
GRAPHQL_ENABLED: 1
HOUSEKEEPING_INTERVAL: 86400
MEDIA_ROOT: /opt/netbox/netbox/media
METRICS_ENABLED: 1
REDIS_CACHE_DATABASE: 1
REDIS_CACHE_HOST: redis-cache
REDIS_CACHE_INSECURE_SKIP_TLS_VERIFY: 0
REDIS_CACHE_PASSWORD: MYPASSWORD
REDIS_CACHE_SSL: 0
REDIS_DATABASE: 0
REDIS_HOST: redis
REDIS_INSECURE_SKIP_TLS_VERIFY: 0
REDIS_PASSWORD: 123456779
REDIS_SSL: 0
RELEASE_CHECK_URL: https://api.github.com/repos/netbox-community/netbox/releases
SECRET_KEY: 'MYSECRETKEY'
SKIP_SUPERUSER: 1
WEBHOOKS_ENABLED: 1
user: "unit:root"
healthcheck:
test: curl -f http://localhost:8080/login/ || exit 1
start_period: 90s
timeout: 3s
interval: 15s
volumes:
- /mnt/worker_gluster/netbox/config:/etc/netbox/config:z,ro
- /mnt/worker_gluster/netbox/media:/opt/netbox/netbox/media:rw
- /mnt/worker_gluster/netbox/reports:/opt/netbox/netbox/reports:rw
- /mnt/worker_gluster/netbox/scripts:/opt/netbox/netbox/scripts:rw
networks:
- traefik-net
- netbox-net
# NetBox worker
netbox-worker:
deploy:
replicas: 1
placement:
constraints:
- node.role == worker # soll auf einem Worker-Knoten laufen
<<: *netbox
command:
- /opt/netbox/venv/bin/python
- /opt/netbox/netbox/manage.py
- rqworker
healthcheck:
test: ps -aux | grep -v grep | grep -q rqworker || exit 1
start_period: 20s
timeout: 3s
interval: 15s
networks:
- netbox-net
# NetBox housekeeping
netbox-housekeeping:
deploy:
replicas: 1
placement:
constraints:
- node.role == worker # soll auf einem Worker-Knoten laufen
<<: *netbox
command:
- /opt/netbox/housekeeping.sh
healthcheck:
test: ps -aux | grep -v grep | grep -q housekeeping || exit 1
start_period: 20s
timeout: 3s
interval: 15s
networks:
- netbox-net
networks:
traefik-net:
driver: overlay
external: true
netbox-net:
driver: overlay
external: true
and my traefik is configured like this
api:
dashboard: true
insecure: false
#ping:
# manualRouting: true
metrics:
prometheus:
buckets:
- 0.1
- 0.3
- 1.2
- 5.0
# entryPoint: metrics
addEntryPointsLabels: true
addRoutersLabels: true
addServicesLabels: true
entryPoints:
web:
address: ":80"
http:
redirections:
entryPoint:
to: "websecure"
scheme: "https"
websecure:
address: ":443"
http:
tls:
certresolver: "cloudflare"
domains:
- main: "*.MYDOMAIN"
# metrics:
# address: ":8082"
serversTransport:
insecureSkipVerify: true
log:
filePath: "/var/log/traefik.log"
format: json
level: DEBUG
maxSize: 100
maxBackups: 3
compress: true
providers:
swarm:
endpoint: "unix:///var/run/docker.sock"
watch: true
exposedByDefault: false
file:
# filename: "/etc/traefik/dynamic.yml"
directory: /etc/traefik/dynamic
watch: true
certificatesResolvers:
cloudflare:
acme:
email: "MYEMAIL"
storage: "/etc/certs/acme.json"
# caserver: "https://acme-staging-v02.api.letsencrypt.org/directory" #Just for testing, after that, disable it!
dnsChallenge:
provider: cloudflare
resolvers:
- "1.1.1.1:53"
- "1.0.0.1:53"
In Traefik 3 servers are listed in the service:
Anyone an idea what I am doing wrong?