Files
homelab/ansible/preparing-playbook/reza-ansible/roles/repo-server/templates/docker-compose.yaml.j2

97 lines
4.1 KiB
Django/Jinja

version: '3.4'
networks:
web_net:
external: false
name: web_net
volumes:
traefik-acme:
name: traefik-acme
nexus-data:
name: nexus-data
services:
traefik:
image: "{{TRAEFIK_IMAGE }}:{{TRAEFIK_VERSION}}"
restart: always
container_name: traefik
command:
- "--log.level=INFO"
- "--log.filepath=/log-file.log"
- "--log.format=json"
- "--api=true"
- "--ping=true"
- "--accesslog=true"
- "--accesslog.bufferingsize=100"
- "--api.insecure=true"
- "--providers.docker.endpoint=unix:///var/run/docker.sock"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.network=web_net"
- "--entrypoints.http.address=:80"
- "--entrypoints.https.address=:443"
- "--metrics.prometheus=true"
- "--entryPoints.metrics.address=:8082"
- "--metrics.prometheus.entryPoint=metrics"
- "--certificatesresolvers.mycert.acme.email={{ TRAEFIK_ACME_EMAIL }}"
- "--certificatesresolvers.mycert.acme.storage=/acme/acme.json"
- "--certificatesresolvers.mycert.acme.tlschallenge=true"
- "--providers.file.filename=/traefik/config.yml"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik:/traefik
- traefik-acme:/acme
networks:
- web_net
labels:
- "traefik.enable=true"
- "traefik.docker.network=web_net"
- "traefik.http.routers.traefik.entrypoints=http"
- "traefik.http.routers.traefik.rule=Host(`{{ TRAEFIK_SUB_DOMAIN }}.{{ DOMAIN_NAME }}`)"
- "traefik.http.routers.traefik.middlewares=https-redirect"
- "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"
- "traefik.http.middlewares.web-auth.basicauth.users={{ WEB_AUTH_USER }}:{{ WEB_AUTH_PASS }}"
- "traefik.http.routers.traefik-secure.middlewares=web-auth,security@file,hsts@file"
- "traefik.http.routers.traefik-secure.entrypoints=https"
- "traefik.http.routers.traefik-secure.rule=Host(`{{ TRAEFIK_SUB_DOMAIN }}.{{ DOMAIN_NAME }}`)"
- "traefik.http.routers.traefik-secure.tls=true"
- "traefik.http.routers.traefik-secure.tls.options=default"
- "traefik.http.routers.traefik-secure.tls.certresolver=mycert"
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
nexus:
image: "{{ NEXUS_IMAGE }}:{{ NEXUS_VERSION }}"
container_name: nexus
restart: always
volumes:
- "nexus-data:/nexus-data"
networks:
- web_net
labels:
- "traefik.enable=true"
- "traefik.docker.network=web_net"
- "traefik.http.routers.repo.entrypoints=http"
- "traefik.http.routers.repo.rule=Host(`{{NEXUS_SUB_DOMAIN}}.{{ DOMAIN_NAME }}`)"
- "traefik.http.routers.repo.service=repo-secure"
- "traefik.http.routers.repo.middlewares=https-redirect"
- "traefik.http.routers.repo-secure.entrypoints=https"
- "traefik.http.routers.repo-secure.rule=Host(`{{NEXUS_SUB_DOMAIN}}.{{ DOMAIN_NAME }}`)"
- "traefik.http.routers.repo-secure.tls=true"
- "traefik.http.routers.repo-secure.tls.options=default"
- "traefik.http.routers.repo-secure.service=repo-secure"
- "traefik.http.routers.repo-secure.tls.certresolver=mycert"
- "traefik.http.services.repo-secure.loadbalancer.server.port=8081"
- "traefik.http.routers.hubdocker.entrypoints=http"
- "traefik.http.routers.hubdocker.rule=Host(`{{HUB_SUB_DOMAIN}}.{{ DOMAIN_NAME }}`)"
- "traefik.http.routers.hubdocker.middlewares=https-redirect"
- "traefik.http.routers.hubdocker-secure.entrypoints=https"
- "traefik.http.routers.hubdocker.service=hubdocker-secure"
- "traefik.http.routers.hubdocker-secure.rule=Host(`{{HUB_SUB_DOMAIN}}.{{ DOMAIN_NAME }}`)"
- "traefik.http.routers.hubdocker-secure.tls=true"
- "traefik.http.routers.hubdocker-secure.tls.options=default"
- "traefik.http.routers.hubdocker-secure.service=hubdocker-secure"
- "traefik.http.routers.hubdocker-secure.tls.certresolver=mycert"
- "traefik.http.services.hubdocker-secure.loadbalancer.server.port=8090"