docker-compose.platform.yml•5.01 kB
---
# configures the system to use the loki docker driver
# see https://grafana.com/docs/loki/latest/send-data/docker-driver/
x-loki-logged-service: &loki-logged-service
logging:
driver: loki
options:
loki-url: "http://loki:3100/loki/api/v1/push"
loki-batch-size: "400"
loki-retries: "1"
max-file: "2"
max-size: "10m"
# Note: ensure services are sorted alphabetically
services:
db-test:
#<<: *loki-logged-service
image: systeminit/postgres:stable
environment:
- "POSTGRES_PASSWORD=bugbear"
- "PGPASSWORD=bugbear"
- "POSTGRES_USER=si_test"
- "POSTGRES_DB=si_test"
- "POSTGRES_MULTIPLE_DBS=si_test_dal,si_test_sdf_server,si_test_layer_db,si_test_audit"
command:
- "-c"
- "fsync=off"
- "-c"
- "full_page_writes=off"
ports:
- "8432:5432"
healthcheck:
test:
- "CMD-SHELL"
- "[ -f /tmp/ready ]"
interval: 5s
timeout: 10s
retries: 5
grafana:
#<<: *loki-logged-service
image: grafana/grafana-enterprise
environment:
- "GF_AUTH_ANONYMOUS_ENABLED=true"
- "GF_AUTH_ANONYMOUS_ORG_ROLE=Admin"
- "GF_AUTH_DISABLE_LOGIN_FORM=true"
ports:
- "3000:3000"
volumes:
- ./config/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
- ./config/grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards
jaeger:
#<<: *loki-logged-service
image: systeminit/jaeger:stable
ports:
# jaeger ui
- "16686:16686"
localstack:
#<<: *loki-logged-service
image: localstack/localstack
ports:
- "4566:4566"
loki:
#<<: *loki-logged-service
image: grafana/loki
ports:
# http listen port (external for host-run servers)
- "3100:3100"
volumes:
- ./config/loki/config.yml:/etc/loki/local-config.yaml
nats:
#<<: *loki-logged-service
image: systeminit/nats:stable
command:
- "--config"
- "nats-server.conf"
ports:
- "4222:4222"
- "8222:8222"
# We can't have the docker-compose finish before postgres is ready, this is
# a workaround to allow the rest of the tilt file continue to create sdf etc
# so that the start doesn't fail as the databases don't exist
depends_on:
- postgres
node_exporter:
image: prom/node-exporter
command:
- --path.rootfs=/host
pid: host
volumes:
- /:/host:ro
otelcol:
#<<: *loki-logged-service
image: systeminit/otelcol:stable
ports:
# receiver: grpc (external for host-run servers)
- "4317:4317"
# receiver: http (external for host-run servers)
- "4318:4318"
depends_on:
- jaeger
postgres:
#<<: *loki-logged-service
image: systeminit/postgres:stable
environment:
- "POSTGRES_PASSWORD=bugbear"
- "PGPASSWORD=bugbear"
- "POSTGRES_USER=si"
- "POSTGRES_DB=si"
- "POSTGRES_MULTIPLE_DBS=si_layer_db,si_auth,si_auth_prisma_shadow_db,si_module_index,si_audit"
ports:
- "5432:5432"
healthcheck:
test:
- "CMD-SHELL"
- "[ -f /tmp/ready ]"
interval: 5s
timeout: 10s
retries: 5
postgres-test:
#<<: *loki-logged-service
image: systeminit/pgbouncer:stable
environment:
- "DB_USER=si_test"
- "DB_PASSWORD=bugbear"
- "DB_HOST=db-test"
- "ADMIN_USERS=postgres,dbuser,si_test"
- "AUTH_TYPE=scram-sha-256"
- "MAX_CLIENT_CONN=100000"
- "DEFAULT_POOL_SIZE=10"
- "SERVER_IDLE_TIMEOUT=10"
- "POOL_MODE=transaction"
- "MAX_PREPARED_STATEMENTS=10000"
ports:
- "6432:5432"
depends_on:
- db-test
promtail:
#<<: *loki-logged-service
image: grafana/promtail:latest
command:
- "-config.file=/etc/promtail/config.yml"
volumes:
- ../log:/var/log/services:ro
- ./config/promtail/config.yml:/etc/promtail/config.yml
prometheus:
#<<: *loki-logged-service
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- "./config/prometheus/config.yml:/etc/prometheus/prometheus.yml"
depends_on:
- node_exporter
- otelcol
spicedb:
#<<: *loki-logged-service
build: ../component/spicedb
environment:
- "SPICEDB_LOG_FORMAT=console"
- "SPICEDB_GRPC_PRESHARED_KEY=hobgoblin"
- "SPICEDB_DATASTORE_ENGINE=memory"
- "ZED_KEYRING_PASSWORD=orc"
ports:
- "50051:50051"
versitygw:
#<<: *loki-logged-service
image: systeminit/versitygw:stable
entrypoint: ["/bin/sh"]
command:
- "-c"
- |
/usr/local/bin/init-buckets.sh &&
exec /usr/local/bin/versitygw --port :9200 --access siadmin --secret bugbear posix /data
environment:
- "VGW_DATA_DIR=/data"
ports:
- "9200:9200" # S3 API
healthcheck:
test:
- "CMD-SHELL"
- "[ -f /tmp/ready ]"
interval: 5s
timeout: 10s
retries: 5