121 lines
3.7 KiB
YAML
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:
|