Initial commit

This commit is contained in:
Jan Beilicke 2020-03-23 23:42:14 +01:00
commit 8eff0a45fc
12 changed files with 317 additions and 0 deletions

View file

@ -0,0 +1,38 @@
---
version: '3'
networks:
traefik:
driver: bridge
services:
# Load Balancer / SSL / Web Server
traefik:
image: traefik:v2.1
restart: always
networks:
- traefik
ports:
{% if traefik.expose_internally | default(False) %}
- "8181:8080"
{% endif %}
- "80:80"
- "443:443"
{% if traefik.additional_env_vars | default(False) %}
environment:
{% for item in traefik.additional_env_vars | dict2items %}
- {{item.key}}={{item.value}}
{% endfor %}
{% endif %}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /home/{{ docker_user }}/traefik/traefik.toml:/traefik.toml
- /home/{{ docker_user }}/traefik/acme.json:/acme.json
{% if traefik.expose_externally | default(False) %}
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik"
- "traefik.http.frontend.rule=Host:traefik.{{ traefik_virtual_host }}"
- "traefik.http.protocol=http"
- "traefik.http.port=8080"
{% endif %}

48
templates/traefik.toml.j2 Normal file
View file

@ -0,0 +1,48 @@
defaultEntryPoints = ["web", "websecure"]
[log]
level = "ERROR"
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.websecure]
address = ":443"
#[api]
# dashboard = true
# insecure = true
[file]
watch = true
[providers.docker]
endpoint = "unix:///var/run/docker.sock"
exposedByDefault = false
[certificatesResolvers.defaultresolver.acme]
{% if traefik.use_acme_staging %}
caServer = "https://acme-staging-v02.api.letsencrypt.org/directory"
{% endif %}
email = "{{ letsencrypt_email }}"
storage = "acme.json"
[certificatesResolvers.defaultresolver.acme.httpChallenge]
entryPoint = "web"
{% if traefik.extra_mapping | default(False) %}
### NOT WORKING YET!
#[backends]
{% for service_name in traefik.extra_mapping %}
#[backends.{{ service_name }}_backend]
# [backends.{{ service_name }}_backend.servers.server1]
# url = "{{ traefik.extra_mapping[service_name] }}"
{% endfor %}
#
#[frontends]
{% for service_name in traefik.extra_mapping %}
# [frontends.{{ service_name }}_frontend]
# backend = "{{ service_name }}_backend"
# [frontends.{{ service_name }}_frontend.routes.test_1]
# rule = "Host: {{ service_name }}.{{ domain }}"
{% endfor %}
{% endif %}