From c35022c2b78c67aa5831c7f4b13b44a71eba091b Mon Sep 17 00:00:00 2001 From: Author Date: Thu, 3 Sep 2026 06:52:45 +0000 Subject: [PATCH] chore(stacks): nightly regeneration from compose sources Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- stacks/infrastructure.yml | 146 +++++++++++++++++++------------------- stacks/observability.yml | 88 +++++++++++------------ stacks/platform.yml | 108 ++++++++++++++-------------- 3 files changed, 171 insertions(+), 171 deletions(-) diff --git a/stacks/infrastructure.yml b/stacks/infrastructure.yml index 2ec8dc3..a2038ed 100644 --- a/stacks/infrastructure.yml +++ b/stacks/infrastructure.yml @@ -1,5 +1,52 @@ # Generated by stackctl generate — do not edit manually. services: + apisix_gateway: + image: 'apache/apisix:3.17.0-debian' + networks: + default: + aliases: + - apisix-gateway + env_file: + - ./apisix/api-gateway/.env + volumes: + - './apisix/api-gateway/config/apisix.yaml:/usr/local/apisix/conf/config.yaml:ro' + - 'cache:/tmp/apisix-cache/' + healthcheck: + test: + - CMD-SHELL + - test -s /usr/local/apisix/logs/nginx.pid + interval: 20s + timeout: 5s + retries: 3 + labels: + - 'traefik.enable=${TRAEFIK_ENABLE}' + - 'traefik.http.routers.apisix.rule=Host(`${HOST}`)' + - 'traefik.http.routers.apisix.entrypoints=web,websecure' + - traefik.http.routers.apisix.service=apisix + - traefik.http.routers.apisix.tls=true + - 'traefik.http.routers.apisix.tls.certresolver=${CERT_RESOLVER}' + - 'traefik.http.services.apisix.loadbalancer.server.port=${PORT}' + logging: + options: + max-size: 10m + max-file: 3 + deploy: + mode: global + placement: + constraints: + - node.role == manager + resources: + reservations: + memory: 128M + cpus: '0.10' + limits: + memory: 384M + cpus: '0.40' + restart_policy: + condition: on-failure + delay: 10s + max_attempts: 10 + window: 180s apisix_dashboard: image: 'apache/apisix-dashboard:3.0.1-alpine' networks: @@ -81,32 +128,34 @@ services: delay: 5s max_attempts: 0 window: 120s - apisix_gateway: - image: 'apache/apisix:3.17.0-debian' + traefik: + image: 'traefik:v3.7' networks: default: aliases: - - apisix-gateway - env_file: - - ./apisix/api-gateway/.env + - traefik + ports: + - '80:80' + - '443:443' + env_file: ./traefik/.env volumes: - - './apisix/api-gateway/config/apisix.yaml:/usr/local/apisix/conf/config.yaml:ro' - - 'cache:/tmp/apisix-cache/' - healthcheck: - test: - - CMD-SHELL - - test -s /usr/local/apisix/logs/nginx.pid - interval: 20s - timeout: 5s - retries: 3 + - 'traefik-ssl-certs:/etc/traefik/certs' + - './traefik/auth/htpasswd:/etc/htpasswd:ro' + - './traefik/config/traefik.yml:/etc/traefik/traefik.yml:ro' + - './traefik/config/dynamic.yml:/etc/traefik/dynamic.yml:ro' + - '/var/run/docker.sock:/var/run/docker.sock:ro' labels: - 'traefik.enable=${TRAEFIK_ENABLE}' - - 'traefik.http.routers.apisix.rule=Host(`${HOST}`)' - - 'traefik.http.routers.apisix.entrypoints=web,websecure' - - traefik.http.routers.apisix.service=apisix - - traefik.http.routers.apisix.tls=true - - 'traefik.http.routers.apisix.tls.certresolver=${CERT_RESOLVER}' - - 'traefik.http.services.apisix.loadbalancer.server.port=${PORT}' + - 'traefik.http.routers.traefik-ui.rule=Host(`${HOST}`)' + - 'traefik.http.routers.traefik-ui.entrypoints=web,websecure' + - traefik.http.routers.traefik-ui.service=api@internal + - traefik.http.routers.traefik-ui.middlewares=sso + - traefik.http.routers.traefik-ui.tls=true + - 'traefik.http.routers.traefik-ui.tls.certresolver=${CERT_RESOLVER}' + - 'traefik.http.middlewares.sso.plugin.trauth.domain=${TRUEAUTH_DOMAIN}' + - 'traefik.http.middlewares.sso.plugin.trauth.cookiename=${TRUEAUTH_COOKIE}' + - 'traefik.http.middlewares.sso.plugin.trauth.users=${SSO_CREDENTIALS}' + - 'traefik.http.services.traefik-ui.loadbalancer.server.port=${PORT}' logging: options: max-size: 10m @@ -116,18 +165,15 @@ services: placement: constraints: - node.role == manager + restart_policy: + condition: any resources: reservations: memory: 128M cpus: '0.10' limits: - memory: 384M - cpus: '0.40' - restart_policy: - condition: on-failure - delay: 10s - max_attempts: 10 - window: 180s + memory: 512M + cpus: '0.50' mongo: image: 'mongo:8.3.8' networks: @@ -212,52 +258,6 @@ services: delay: 5s max_attempts: 0 window: 120s - traefik: - image: 'traefik:v3.7' - networks: - default: - aliases: - - traefik - ports: - - '80:80' - - '443:443' - env_file: ./traefik/.env - volumes: - - 'traefik-ssl-certs:/etc/traefik/certs' - - './traefik/auth/htpasswd:/etc/htpasswd:ro' - - './traefik/config/traefik.yml:/etc/traefik/traefik.yml:ro' - - './traefik/config/dynamic.yml:/etc/traefik/dynamic.yml:ro' - - '/var/run/docker.sock:/var/run/docker.sock:ro' - labels: - - 'traefik.enable=${TRAEFIK_ENABLE}' - - 'traefik.http.routers.traefik-ui.rule=Host(`${HOST}`)' - - 'traefik.http.routers.traefik-ui.entrypoints=web,websecure' - - traefik.http.routers.traefik-ui.service=api@internal - - traefik.http.routers.traefik-ui.middlewares=sso - - traefik.http.routers.traefik-ui.tls=true - - 'traefik.http.routers.traefik-ui.tls.certresolver=${CERT_RESOLVER}' - - 'traefik.http.middlewares.sso.plugin.trauth.domain=${TRUEAUTH_DOMAIN}' - - 'traefik.http.middlewares.sso.plugin.trauth.cookiename=${TRUEAUTH_COOKIE}' - - 'traefik.http.middlewares.sso.plugin.trauth.users=${SSO_CREDENTIALS}' - - 'traefik.http.services.traefik-ui.loadbalancer.server.port=${PORT}' - logging: - options: - max-size: 10m - max-file: 3 - deploy: - mode: global - placement: - constraints: - - node.role == manager - restart_policy: - condition: any - resources: - reservations: - memory: 128M - cpus: '0.10' - limits: - memory: 512M - cpus: '0.50' portainer: image: 'portainer/portainer-ce:2.44.0' volumes: diff --git a/stacks/observability.yml b/stacks/observability.yml index ac74aef..630550d 100644 --- a/stacks/observability.yml +++ b/stacks/observability.yml @@ -38,6 +38,34 @@ services: limits: memory: 384M cpus: '0.40' + loki: + image: 'grafana/loki:3.7.5' + command: '-config.file=/etc/loki/config.yaml' + volumes: + - './observability/loki/config.yaml:/etc/loki/config.yaml' + - 'loki-data:/loki' + env_file: ./observability/loki/.env + networks: + default: + aliases: + - loki + logging: + options: + max-size: 10m + max-file: 3 + deploy: + mode: replicated + replicas: 1 + placement: + constraints: + - node.role == manager + restart_policy: + condition: any + resources: + reservations: + memory: 256M + limits: + memory: 800M prometheus: image: 'prom/prometheus:v3.13.2' command: @@ -91,41 +119,6 @@ services: limits: memory: 1200M cpus: '0.80' - grafana: - image: 'grafana/grafana-oss:13.0.2' - volumes: - - 'grafana-data:/var/lib/grafana' - - './observability/grafana/config/provisioning:/etc/grafana/provisioning/' - env_file: ./observability/grafana/.env - labels: - - 'traefik.enable=${TRAEFIK_ENABLE}' - - 'traefik.http.routers.grafana.rule=Host(`${HOST}`)' - - 'traefik.http.routers.grafana.entrypoints=web,websecure' - - traefik.http.routers.grafana.service=grafana - - traefik.http.routers.grafana.tls=true - - 'traefik.http.routers.grafana.tls.certresolver=${CERT_RESOLVER}' - - 'traefik.http.services.grafana.loadbalancer.server.port=${PORT}' - networks: - default: - aliases: - - grafana - logging: - options: - max-size: 10m - max-file: 3 - deploy: - mode: replicated - replicas: 1 - placement: - constraints: - - node.role == manager - restart_policy: - condition: any - resources: - reservations: - memory: 128M - limits: - memory: 512M memcached: image: 'memcached:1.6.45' environment: @@ -174,17 +167,24 @@ services: memory: 256M limits: memory: 600M - loki: - image: 'grafana/loki:3.7.5' - command: '-config.file=/etc/loki/config.yaml' + grafana: + image: 'grafana/grafana-oss:13.0.2' volumes: - - './observability/loki/config.yaml:/etc/loki/config.yaml' - - 'loki-data:/loki' - env_file: ./observability/loki/.env + - 'grafana-data:/var/lib/grafana' + - './observability/grafana/config/provisioning:/etc/grafana/provisioning/' + env_file: ./observability/grafana/.env + labels: + - 'traefik.enable=${TRAEFIK_ENABLE}' + - 'traefik.http.routers.grafana.rule=Host(`${HOST}`)' + - 'traefik.http.routers.grafana.entrypoints=web,websecure' + - traefik.http.routers.grafana.service=grafana + - traefik.http.routers.grafana.tls=true + - 'traefik.http.routers.grafana.tls.certresolver=${CERT_RESOLVER}' + - 'traefik.http.services.grafana.loadbalancer.server.port=${PORT}' networks: default: aliases: - - loki + - grafana logging: options: max-size: 10m @@ -199,9 +199,9 @@ services: condition: any resources: reservations: - memory: 256M + memory: 128M limits: - memory: 800M + memory: 512M beszel: image: 'henrygd/beszel:0.18.8' networks: diff --git a/stacks/platform.yml b/stacks/platform.yml index 9d5150b..d5e5042 100644 --- a/stacks/platform.yml +++ b/stacks/platform.yml @@ -1,42 +1,5 @@ # Generated by stackctl generate — do not edit manually. services: - anitrend-edge: - image: 'ghcr.io/anitrend/on-the-edge:1.6.6' - networks: - default: - aliases: - - anitrend-edge - env_file: ./on-the-edge/.env - labels: - - 'traefik.enable=${TRAEFIK_ENABLE}' - - 'traefik.http.routers.anitrend-edge.rule=Host(`${HOST}`)' - - 'traefik.http.routers.anitrend-edge.entrypoints=web,websecure' - - traefik.http.routers.anitrend-edge.service=anitrend-edge - - traefik.http.routers.anitrend-edge.tls=true - - 'traefik.http.routers.anitrend-edge.tls.certresolver=${CERT_RESOLVER}' - - 'traefik.http.services.anitrend-edge.loadbalancer.server.port=${PORT}' - logging: - options: - max-size: 10m - max-file: 3 - deploy: - mode: replicated - replicas: 1 - placement: - constraints: - - node.role == manager - resources: - reservations: - memory: 128M - cpus: '0.10' - limits: - memory: 384M - cpus: '0.50' - restart_policy: - condition: any - delay: 10s - max_attempts: 10 - window: 180s growthbook_proxy: image: 'growthbook/proxy:v1.3.5' env_file: ./growthbook/proxy/.env @@ -143,6 +106,37 @@ services: delay: 10s max_attempts: 10 window: 180s + website: + image: 'ghcr.io/anitrend/website:0.4.2' + networks: + default: + aliases: + - website + env_file: ./website/.env + labels: + - 'traefik.enable=${TRAEFIK_ENABLE}' + - 'traefik.http.routers.website.rule=Host(`${HOST}`)' + - 'traefik.http.routers.website.entrypoints=web,websecure' + - traefik.http.routers.website.service=website + - traefik.http.routers.website.tls=true + - 'traefik.http.routers.website.tls.certresolver=${CERT_RESOLVER}' + - 'traefik.http.services.website.loadbalancer.server.port=${PORT}' + deploy: + mode: replicated + replicas: 1 + placement: + constraints: + - node.role == manager + resources: + reservations: + memory: 64M + limits: + memory: 256M + logging: + driver: local + options: + max-size: 10m + max-file: 3 edge-graphql: image: 'ghcr.io/anitrend/edge-graphql:0.1.15' networks: @@ -182,21 +176,25 @@ services: delay: 10s max_attempts: 10 window: 180s - website: - image: 'ghcr.io/anitrend/website:0.4.2' + anitrend-edge: + image: 'ghcr.io/anitrend/on-the-edge:1.6.6' networks: default: aliases: - - website - env_file: ./website/.env + - anitrend-edge + env_file: ./on-the-edge/.env labels: - 'traefik.enable=${TRAEFIK_ENABLE}' - - 'traefik.http.routers.website.rule=Host(`${HOST}`)' - - 'traefik.http.routers.website.entrypoints=web,websecure' - - traefik.http.routers.website.service=website - - traefik.http.routers.website.tls=true - - 'traefik.http.routers.website.tls.certresolver=${CERT_RESOLVER}' - - 'traefik.http.services.website.loadbalancer.server.port=${PORT}' + - 'traefik.http.routers.anitrend-edge.rule=Host(`${HOST}`)' + - 'traefik.http.routers.anitrend-edge.entrypoints=web,websecure' + - traefik.http.routers.anitrend-edge.service=anitrend-edge + - traefik.http.routers.anitrend-edge.tls=true + - 'traefik.http.routers.anitrend-edge.tls.certresolver=${CERT_RESOLVER}' + - 'traefik.http.services.anitrend-edge.loadbalancer.server.port=${PORT}' + logging: + options: + max-size: 10m + max-file: 3 deploy: mode: replicated replicas: 1 @@ -205,14 +203,16 @@ services: - node.role == manager resources: reservations: - memory: 64M + memory: 128M + cpus: '0.10' limits: - memory: 256M - logging: - driver: local - options: - max-size: 10m - max-file: 3 + memory: 384M + cpus: '0.50' + restart_policy: + condition: any + delay: 10s + max_attempts: 10 + window: 180s networks: default: name: traefik-public