services: # Actual Speckle Server dependencies postgres: image: 'postgres:16.4-alpine3.20@sha256:d898b0b78a2627cb4ee63464a14efc9d296884f1b28c841b0ab7d7c42f1fffdf' restart: always environment: POSTGRES_DB: speckle POSTGRES_USER: speckle POSTGRES_PASSWORD: speckle volumes: - postgres-data:/var/lib/postgresql/data/ - ./setup/db/10-docker_postgres_init.sql:/docker-entrypoint-initdb.d/10-docker_postgres_init.sql - ./setup/db/11-docker_postgres_keycloak_init.sql:/docker-entrypoint-initdb.d/11-docker_postgres_keycloak_init.sql ports: - '5432:5432' command: postgres -c max_prepared_transactions=150 postgres-region1: image: 'postgres:16.4-alpine3.20@sha256:d898b0b78a2627cb4ee63464a14efc9d296884f1b28c841b0ab7d7c42f1fffdf' restart: always environment: POSTGRES_DB: speckle POSTGRES_USER: speckle POSTGRES_PASSWORD: speckle volumes: - postgres-region1-data:/var/lib/postgresql/data/ - ./setup/db/10-docker_postgres_init.sql:/docker-entrypoint-initdb.d/10-docker_postgres_init.sql - ./setup/db/11-docker_postgres_keycloak_init.sql:/docker-entrypoint-initdb.d/11-docker_postgres_keycloak_init.sql ports: - '5401:5432' command: postgres -c max_prepared_transactions=150 postgres-region2: image: 'postgres:16.4-alpine3.20@sha256:d898b0b78a2627cb4ee63464a14efc9d296884f1b28c841b0ab7d7c42f1fffdf' restart: always environment: POSTGRES_DB: speckle POSTGRES_USER: speckle POSTGRES_PASSWORD: speckle volumes: - postgres-region2-data:/var/lib/postgresql/data/ - ./setup/db/10-docker_postgres_init.sql:/docker-entrypoint-initdb.d/10-docker_postgres_init.sql - ./setup/db/11-docker_postgres_keycloak_init.sql:/docker-entrypoint-initdb.d/11-docker_postgres_keycloak_init.sql ports: - '5402:5432' command: postgres -c max_prepared_transactions=150 redis: image: 'valkey/valkey:8.1-alpine' restart: always volumes: - redis-data:/data ports: - '6379:6379' minio: image: 'minio/minio' command: server /data --console-address ":9001" restart: always environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin volumes: - minio-data:/data ports: - '9002:9000' - '9003:9001' minio-region1: image: 'minio/minio' command: server /data --console-address ":9001" restart: always volumes: - minio-region1-data:/data ports: - '9020:9000' - '9021:9001' minio-region2: image: 'minio/minio' command: server /data --console-address ":9001" restart: always volumes: - minio-region2-data:/data ports: - '9040:9000' - '9041:9001' # Local OIDC provider for testing keycloak: image: quay.io/keycloak/keycloak:25.0 depends_on: - postgres environment: KC_DB: postgres KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak KC_DB_USERNAME: speckle KC_DB_PASSWORD: speckle KC_HOSTNAME: 100.64.0.3 KC_HOSTNAME_PORT: 9000 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 ports: - 8443:8443 - 9010:9000 - 8090:8080 command: start-dev --import-realm volumes: - ./setup/keycloak:/opt/keycloak/data/import # Local email server for email troubleshooting maildev: restart: always image: maildev/maildev ports: - '1080:1080' - '1025:1025' pgadmin: image: dpage/pgadmin4 restart: always environment: PGADMIN_DEFAULT_EMAIL: admin@localhost.com PGADMIN_DEFAULT_PASSWORD: admin volumes: - pgadmin-data:/var/lib/pgadmin ports: - '16543:80' depends_on: - postgres redis_insight: image: redislabs/redisinsight:latest restart: always volumes: - redis_insight-data:/db ports: - '8001:8001' depends_on: - redis # Storage persistency volumes: postgres-data: postgres-region1-data: postgres-region2-data: redis-data: pgadmin-data: redis_insight-data: minio-data: minio-region1-data: minio-region2-data: