Open thepenguinthatwants opened 4 years ago
You can use Traefik as a load-balancer for your services ... It's not important which one
version: "3.7"
services:
isso:
...
labels:
- "traefik.enable=true"
# HTTPS
- "traefik.http.routers.isso.rule=Host(`isso.domain.com`)"
- "traefik.http.routers.isso.entrypoints=web"
- "traefik.http.routers.isso.service=isso"
- "traefik.http.services.isso.loadbalancer.server.port=8080"
Yes it works. I tested it using the following configuration:
# /home/oktomus/docker/docker-compose.yml
version: '3'
networks:
http-proxy:
volumes:
traefik-acme:
isso-config:
driver: local-persist
driver_opts:
mountpoint: /home/oktomus/docker/volumes/isso-config
isso-db:
driver: local-persist
driver_opts:
mountpoint: /home/oktomus/docker/volumes/isso-db
services:
isso:
restart: always
image: wonderfall/isso
environment:
- GID=${ISSO_GID}
- UID=${ISSO_UID}
volumes:
- isso-config:/config:rw
- isso-db:/db:rw
networks:
- http-proxy
ports:
- 8080
labels:
traefik.domain: "${ISSO_VIRTUAL_HOST}"
traefik.backend: isso
traefik.frontend.rule: "Host:${ISSO_VIRTUAL_HOST}"
traefik.port: 8080
traefik:
restart: always
image: traefik:1.7-alpine
command:
- "--defaultentrypoints=http,https"
- "--entrypoints=Name:http Address::80 Redirect.EntryPoint:https"
- "--entrypoints=Name:https Address::443 TLS"
- "--retry"
- "--docker"
- "--docker.domain=${ISSO_VIRTUAL_HOST}"
- "--docker.exposedbydefault=true"
- "--docker.watch=true"
- "--acme"
- "--acme.domains=${ISSO_VIRTUAL_HOST}"
- "--acme.email=${TRAEFIK_LETSENCRYPT_EMAIL}"
- "--acme.entrypoint=https"
- "--acme.onhostrule=true"
- "--acme.storage=/acme/acme.json"
- "--acme.httpchallenge"
- "--acme.httpchallenge.entrypoint=http"
networks:
- http-proxy
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik-acme:/acme
# /home/oktomus/docker/.env
TRAEFIK_LETSENCRYPT_EMAIL=XXXX
ISSO_VIRTUAL_HOST=XXXX
ISSO_UID=1000
ISSO_GID=1001
# /home/oktomus/docker/volumes/isso-config/isso.conf
[general]
name = oktomus
dbpath = /db/comments.db
host = WEBSITE_URL
max-age = 15m
[moderation]
enabled = false
[admin]
enabled = true
password = XXX
[server]
listen = http://0.0.0.0:8080/
reload = off
profile = off
public-endpoint = https://ISSO_PUBLIC_URL # Important to set the public endpoint to load css and js correctly from the admin
Hope it helps !
I am trying to figure out how to get this work and implement this on my hugo blog.
Wondering if some documentations or help is available?