Files
ObjectStore/tests/two-host/compose.yaml
T
2026-10-10 15:22:21 +02:00

121 lines
3.7 KiB
YAML

services:
metadata:
image: postgres:17-alpine
restart: unless-stopped
environment:
POSTGRES_DB: objectstore
POSTGRES_USER: objectstore
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD}
volumes:
- metadata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U objectstore -d objectstore"]
interval: 5s
timeout: 3s
retries: 10
mem_limit: 256m
security_opt:
- no-new-privileges:true
node-local:
image: objectstore-durability:local
restart: unless-stopped
entrypoint: ["java", "--add-modules", "jdk.httpserver,java.net.http", "-cp", "/app:/app/postgresql.jar", "cloud.lunarsky.store.ClusterNode"]
environment:
CLUSTER_TOKEN: ${CLUSTER_TOKEN:?Set CLUSTER_TOKEN}
CLUSTER_REPAIR_TOKEN: ${CLUSTER_REPAIR_TOKEN:?Set CLUSTER_REPAIR_TOKEN}
CLUSTER_HOST_ID: ${LOCAL_HOST_ID:?Set LOCAL_HOST_ID}
NODE_BIND: 0.0.0.0
DATA_DIR: /data
volumes:
- node-local:/data
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:9100/health"]
interval: 5s
timeout: 3s
retries: 10
mem_limit: 256m
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
gateway:
image: objectstore-durability:local
restart: unless-stopped
environment:
STORE_MODE: cluster
CLUSTER_LOCAL_DEV: "true"
BIND_ADDRESS: 0.0.0.0
S3_ACCESS_KEY: ${S3_ACCESS_KEY:?Set S3_ACCESS_KEY}
S3_SECRET_KEY: ${S3_SECRET_KEY:?Set S3_SECRET_KEY}
S3_BUCKET: durability
S3_REGION: us-east-1
MAX_OBJECT_BYTES: 67108864
MAX_TOTAL_BYTES: 536870912
CLUSTER_TOKEN: ${CLUSTER_TOKEN:?Set CLUSTER_TOKEN}
CLUSTER_NODES: http://node-local:9100,${REMOTE_NODE_URL:?Set REMOTE_NODE_URL}
POSTGRES_JDBC_URL: jdbc:postgresql://metadata:5432/objectstore?connectTimeout=3&socketTimeout=10
POSTGRES_USER: objectstore
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD}
ports:
- "127.0.0.1:${CLUSTER_HOST_PORT:-9003}:9000"
depends_on:
metadata:
condition: service_healthy
node-local:
condition: service_healthy
healthcheck:
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:9000/ready"]
interval: 5s
timeout: 3s
retries: 10
mem_limit: 384m
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
repair:
image: objectstore-durability:local
profiles: [repair]
entrypoint: ["/usr/local/bin/objectstore", "cluster-repair"]
environment:
STORE_MODE: cluster
CLUSTER_LOCAL_DEV: "true"
CLUSTER_NODES: http://node-local:9100,${REMOTE_NODE_URL:?Set REMOTE_NODE_URL}
CLUSTER_TOKEN: ${CLUSTER_TOKEN:?Set CLUSTER_TOKEN}
CLUSTER_REPAIR_TOKEN: ${CLUSTER_REPAIR_TOKEN:?Set CLUSTER_REPAIR_TOKEN}
S3_BUCKET: durability
POSTGRES_JDBC_URL: jdbc:postgresql://metadata:5432/objectstore?connectTimeout=3&socketTimeout=10
POSTGRES_USER: objectstore
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD}
mem_limit: 384m
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
metadata-recovery:
image: postgres:17-alpine
profiles: [recovery]
environment:
POSTGRES_DB: objectstore
POSTGRES_USER: objectstore
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD}
volumes:
- metadata-recovery:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U objectstore -d objectstore"]
interval: 5s
timeout: 3s
retries: 10
mem_limit: 256m
security_opt:
- no-new-privileges:true
volumes:
metadata:
metadata-recovery:
node-local: