job "shlink" {
  datacenters = ["aperture"]

  type = "service"

  group "web" {
    network {
      port "api" {
        to = 8080
      }
      port "web" {
        to = 8080
      }
    }

    service {
      name = "shlink"
      port = "api"

      tags = [
        "traefik.enable=true",
        "traefik.http.routers.shlink-api.entrypoints=web,websecure",
        "traefik.http.routers.shlink-api.rule=Host(`s.rb.dcu.ie`)",
        "traefik.http.routers.shlink-api.tls=true",
        "traefik.http.routers.shlink-api.tls.certresolver=lets-encrypt",
      ]
    }

    task "shlink" {
      driver = "docker"

      config {
        image = "shlinkio/shlink"
        ports = ["api"]
      }

      template {
        data = <<EOH
DEFAULT_DOMAIN=s.rb.dcu.ie
IS_HTTPS_ENABLED=true
DB_DRIVER=postgres
DB_USER={{ key "shlink/db/user" }}
DB_PASSWORD={{ key "shlink/db/password" }}
DB_NAME={{ key "shlink/db/name" }}
DB_HOST=postgres.service.consul
GEOLITE_LICENSE_KEY={{ key "shlink/geolite/key" }}
EOH
        destination = "local/file.env"
        env         = true
      }
      resources {
        memory = 1000
      }
    }

#    task "shlink-web-client" {
#      driver = "docker"
#
#      config {
#        image = "shlinkio/shlink-web-client"
#        ports = ["web"]
#      }
#
#      template {
#        data = <<EOH
#SHLINK_SERVER_URL=https://s.rb.dcu.ie
#SHLINK_API_KEY={{ key "shlink/api/key" }}
#EOH
#        destination = "local/file.env"
#        env         = true
#      }
#
#
#
#      service {
#        name = "shlink"
#        port = "api"
#
#        tags = [
#          "traefik.enable=true",
#          "traefik.http.routers.shlink-web.entrypoints=web,websecure",
#          "traefik.http.routers.shlink-web.rule=Host(`shlink.rb.dcu.ie`)",
#          "traefik.http.routers.shlink-web.tls=true",
#          "traefik.http.routers.shlink-web.tls.certresolver=lets-encrypt",
#        ]
#      }
#      resources {
#        memory = 500
#      }
#    }
  }
}