job "mps-site" { datacenters = ["aperture"] type = "service" group "mps-django" { count = 1 network { port "http" { to = 8000 } } service { name = "mps-django" port = "http" check { type = "http" path = "/" interval = "10s" timeout = "5s" } tags = [ "traefik.enable=true", "traefik.port=${NOMAD_PORT_http}", "traefik.http.routers.mps-django.rule=Host(`mps.rb.dcu.ie`) || Host(`dcumps.ie`) || Host(`www.dcumps.ie`) || Host(`dcumps.com`) || Host(`www.dcumps.com`)", "traefik.http.routers.mps-django.entrypoints=web,websecure", "traefik.http.routers.mps-django.tls.certresolver=lets-encrypt", "traefik.http.routers.mps-django.middlewares=mps-django-redirect-com", "traefik.http.middlewares.mps-django-redirect-com.redirectregex.regex=dcumps\\.com/(.*)", "traefik.http.middlewares.mps-django-redirect-com.redirectregex.replacement=dcumps.ie/$1", ] } task "django-web" { driver = "docker" config { image = "ghcr.io/dcumps/dcumps-website-django:latest" ports = ["http"] force_pull = true hostname = "${NOMAD_TASK_NAME}" auth { username = "${DOCKER_USER}" password = "${DOCKER_PASS}" } volumes = [ "local/hosts:/etc/hosts", ] } template { data = <<EOH DOCKER_USER={{ key "mps/site/ghcr/username" }} DOCKER_PASS={{ key "mps/site/ghcr/password" }} EOH destination = "local/.env" env = true } template { data = <<EOF 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.17 {{ env "NOMAD_TASK_NAME" }} # use internal IP for thecollegeview.ie as external IP isn't routable 192.168.0.158 thecollegeview.ie 192.168.0.158 www.thecollegeview.ie EOF destination = "local/hosts" } resources { cpu = 300 memory = 500 } } } }