job "dcusr-pretix" { datacenters = ["aperture"] type = "service" meta { domain = "tickets.solarracing.ie" } group "web" { network { # mode = "bridge" port "http" { to = 80 } port "db" { to = 5432 } port "redis" { to = 6379 } } service { name = "pretix-web" port = "http" tags = [ "traefik.enable=true", "traefik.port=${NOMAD_PORT_http}", "traefik.http.routers.pretix.entrypoints=web,websecure", "traefik.http.routers.pretix.rule=Host(`${NOMAD_META_domain}`)", "traefik.http.routers.pretix.tls=true", "traefik.http.routers.pretix.tls.certresolver=lets-encrypt", ] } task "pretix" { driver = "docker" config { image = "pretix/standalone:stable" ports = ["http"] volumes = [ "local/pretix.cfg:/etc/pretix/pretix.cfg", "/storage/nomad/pretix/data:/data", "/etc/timezone:/etc/timezone:ro", ] } resources { memory = 5000 cores = 1 } env { NUM_WORKERS = 1 } template { data = <<EOH [pretix] instance_name=DCU Solar Racing url=https://{{ env "NOMAD_META_domain" }} currency=EUR datadir=/data registration=off [locale] timezone=Europe/Dublin [database] backend=postgresql name={{ key "pretix/db/name" }} user={{ key "pretix/db/user" }} password={{ key "pretix/db/password" }} host={{ env "NOMAD_IP_db" }} port={{ env "NOMAD_HOST_PORT_db" }} [mail] from={{ key "pretix/mail/from" }} host={{ key "pretix/mail/host" }} user={{ key "pretix/mail/user" }} password={{ key "pretix/mail/password" }} port=587 tls=on ssl=off [redis] location=redis://{{ env "NOMAD_ADDR_redis" }}/0 sessions=true [celery] backend=redis://{{ env "NOMAD_ADDR_redis" }}/1 broker=redis://{{ env "NOMAD_ADDR_redis" }}/2 worker_prefetch_multiplier = 0 EOH destination = "local/pretix.cfg" } } task "pretix-db" { driver = "docker" config { image = "postgres:16-alpine" ports = ["db"] volumes = [ "/storage/nomad/pretix/db:/var/lib/postgresql/data", ] } template { data = <<EOH POSTGRES_USER={{ key "pretix/db/user" }} POSTGRES_PASSWORD={{ key "pretix/db/password" }} EOH destination = "local/db.env" env = true } } task "redis" { driver = "docker" config { image = "redis:latest" ports = ["redis"] } } } }