summaryrefslogtreecommitdiff
path: root/playbooks/roles/pihole/templates/stacks/docker-compose.yml
blob: 573121fb3d05f93664ff0185be3a203bbbfdae2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
services:
  pihole:
    image: pihole/pihole:latest
    ports:
      - "53:53/udp"
      - "53:53/tcp"
    volumes:
      - {{ pihole_base }}/volumes/pihole:/etc/pihole
      - {{ pihole_base }}/volumes/dnsmasq:/etc/dnsmasq.d
    environment:
      - DEPLOYMENT_TIME={{ deployment_time }}
      - TZ={{ timezone }}
      - FTLCONF_webserver_api_password={{ pihole_webpwd }}
      - FTLCONF_dns_upstreams={{ upstream_dns_servers | join(';') }}
    networks:
      - proxy
{% if not homelab_build %}
    healthcheck:
      test: ["CMD-SHELL", "dig loadbalancer.{{ domain }} @127.0.0.1 | grep -q {{ loadbalancer_ip }}"]
      retries: 3
      timeout: 5s
      start_period: 8s
{% endif %}
    deploy:
      mode: replicated
      update_config:
        parallelism: 1
        order: start-first
        failure_action: rollback
        monitor: 10s
      replicas: 1
      labels:
        - traefik.enable=true
        - traefik.swarm.network=proxy
        - traefik.http.routers.piholeweb.tls=true
        - traefik.http.routers.piholeweb.tls.certResolver=letsencrypt
        - traefik.http.routers.piholeweb.rule=Host(`{{ pihole_domain }}`)
        - traefik.http.routers.piholeweb.entrypoints=websecure
        - traefik.http.services.piholeweb.loadbalancer.server.port=80

networks:
  proxy:
    external: true