Files
probo/compose.yaml
Bryan Frimin d8722bf3f3 Pin tempo image digest and add pull_policy: missing to all compose services
Avoid unnecessary Docker registry checks on stack-up by setting
pull_policy: missing on every service. Also pin the tempo image to its
sha256 digest for reproducibility, consistent with all other services.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-04-16 15:21:14 +02:00

179 lines
5.5 KiB
YAML

services:
postgres:
image: "postgres:18.3@sha256:52e6ffd11fddd081ae63880b635b2a61c14008c17fc98cdc7ce5472265516dd0"
pull_policy: missing
shm_size: "1g"
command: >
postgres -c "shared_buffers=1GB"
-c "max_connections=200"
-c "log_statement=all"
ports:
- "5432:5432"
volumes:
- "./compose/postgres:/docker-entrypoint-initdb.d:ro"
- "postgres-data:/var/lib/postgresql:rw"
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "postgres"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
seaweedfs:
image: "chrislusf/seaweedfs:4.20@sha256:cea8339d21dad1b200adce581dd7434d254b8f5975f142c3b4c930ba78647eef"
pull_policy: missing
command: >
server
-s3
-s3.config=/etc/seaweedfs/s3.json
-s3.port=8333
-volume.max=100
-master.volumeSizeLimitMB=1024
-dir=/data
ports:
- "8333:8333"
- "9333:9333"
- "8888:8888"
volumes:
- "./compose/seaweedfs/s3.json:/etc/seaweedfs/s3.json:ro"
- "seaweedfs-data:/data:rw"
grafana:
image: "grafana/grafana:13.0.0@sha256:a03d9e604e4dba58c5e64458a879701f46ef64af1f596058aacfad9aacdcab34"
pull_policy: missing
ports:
- "3001:3000"
volumes:
- "./compose/grafana/provisioning:/etc/grafana/provisioning:ro"
- "grafana-data:/var/lib/grafana:rw"
environment:
GF_AUTH_ANONYMOUS_ENABLED: "true"
GF_AUTH_ANONYMOUS_ORG_ROLE: "Admin"
GF_AUTH_DISABLE_LOGIN_FORM: "true"
GF_USERS_DEFAULT_THEME: "light"
prometheus:
image: "prom/prometheus:v3.11.2@sha256:5550dc63da361dc30f6fe02ac0e4dfc736ededfef3c8d12a634db04a67824d78"
pull_policy: missing
volumes:
- "./compose/prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml"
- "prometheus-data:/prometheus"
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- "--web.console.libraries=/etc/prometheus/console_libraries"
- "--web.console.templates=/etc/prometheus/consoles"
- "--web.enable-lifecycle"
- "--web.enable-remote-write-receiver"
- "--web.listen-address=:9191"
ports:
- "9191:9191"
loki:
image: "grafana/loki:3.7.1@sha256:73e905b51a7f917f7a1075e4be68759df30226e03dcb3cd2213b989cc0dc8eb4"
pull_policy: missing
ports:
- "3100:3100"
command:
- "-config.file=/etc/loki/local-config.yaml"
tempo:
image: "grafana/tempo:2.10.4@sha256:a6616c9d224770c883a67b50e4941e99c5df81b076ef05f516bb7cce5a96cec0"
pull_policy: missing
command:
- "-config.file=/etc/tempo.yaml"
ports:
- "3200:3200"
- "4317:4317"
- "4318:4318"
volumes:
- "./compose/tempo/tempo.yaml:/etc/tempo.yaml:ro"
- "tempo-data:/var/tempo:rw"
mailpit:
image: "axllent/mailpit:v1.29.6@sha256:0b5c5f7ffd3c93474baa7fd3869c1462e5a3d03256ed0933dfc0e7d81d794036"
pull_policy: missing
ports:
- "1025:1025" # SMTP server
- "8025:8025" # Web UI
environment:
- "MP_DISABLE_VERSION_CHECK=true"
- "MP_VERBOSE=false"
- "MP_SMTP_AUTH_ACCEPT_ANY=true"
- "MP_ENABLE_PROMETHEUS=true"
- "MP_SMTP_AUTH_ALLOW_INSECURE=true"
chrome:
image: "chromedp/headless-shell:149.0.7779.3@sha256:b24482ae166e2c67135f5a8ba9575c257efdd8e2fd6b2e931f9d88ede3d72f3b"
pull_policy: missing
ports:
- "9222:9222"
command:
- "--headless"
- "--disable-gpu"
- "--disable-dev-shm-usage"
- "--hide-scrollbars"
- "--mute-audio"
- "--no-default-browser-check"
- "--no-first-run"
- "--disable-background-networking"
- "--disable-background-timer-throttling"
- "--disable-extensions"
pebble:
image: "ghcr.io/letsencrypt/pebble:2.10.0@sha256:68cf1ec8a8db96f64244d5f559c448bc8e54f2934e0dd53a414eabffda7a6f22"
pull_policy: missing
ports:
- "14000:14000" # ACME server
- "15000:15000" # Management interface
environment:
PEBBLE_VA_NOSLEEP: "1" # Don't sleep during validation for faster testing
PEBBLE_WFE_NONCEREJECT: "0" # Don't reject reused nonces
PEBBLE_VA_ALWAYS_VALID: "1" # Skip actual HTTP/DNS validation for local dev
command: -config /test/config/pebble-config.json -dnsserver 127.0.0.1:8053
volumes:
- "./compose/pebble:/test/config:ro"
pebble-challtestsrv:
image: "ghcr.io/letsencrypt/pebble-challtestsrv:2.10.0@sha256:df85447c39114cd2b3da971e751682ad2db19a996034b47d5392cd4a0f43406a"
pull_policy: missing
ports:
- "8055:8055" # HTTP-01 challenge test server
- "8053:8053" # DNS server
- "8056:8056" # Management API
command: -dnsserver ":8053" -http01 ":8055" -management ":8056"
keycloak:
image: "quay.io/keycloak/keycloak:26.6.1@sha256:26ae26445475f7fac5f90ee138b1bdb64324f5815fb16133ffdbdb122d97c4d8"
pull_policy: missing
user: root
environment:
KC_HOSTNAME: localhost
KC_HOSTNAME_PORT: 8082
KC_HOSTNAME_STRICT: false
KC_HOSTNAME_STRICT_HTTPS: false
KC_LOG_LEVEL: info
KC_METRICS_ENABLED: true
KC_HEALTH_ENABLED: true
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
command:
- "start-dev"
- "--import-realm"
ports:
- 8082:8080
volumes:
- "./compose/keycloak:/opt/keycloak/data/import:ro"
- "keycloak-data:/opt/keycloak/data/h2:rw"
volumes:
postgres-data:
seaweedfs-data:
grafana-data:
prometheus-data:
tempo-data:
keycloak-data: