aboutsummaryrefslogtreecommitdiff
path: root/docker-compose.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'docker-compose.yaml')
-rw-r--r--docker-compose.yaml80
1 files changed, 80 insertions, 0 deletions
diff --git a/docker-compose.yaml b/docker-compose.yaml
new file mode 100644
index 0000000..5c115ba
--- /dev/null
+++ b/docker-compose.yaml
@@ -0,0 +1,80 @@
+services:
+ plutia:
+ build:
+ context: .
+ args:
+ VERSION: ${VERSION}
+ COMMIT: ${COMMIT}
+ BUILD_DATE: ${BUILD_DATE}
+ image: ghcr.io/fuwn/plutia:latest
+ command: ["serve", "--config=/etc/plutia/config.yaml"]
+ user: "${PLUTIA_USER:-1000:1000}"
+ init: true
+ stop_signal: SIGTERM
+ stop_grace_period: 60s
+ environment:
+ PLUTIA_MODE: ${PLUTIA_MODE:-mirror}
+ PLUTIA_PLC_SOURCE: ${PLC_SOURCE:-https://plc.directory}
+ PLUTIA_VERIFY: ${VERIFY_POLICY:-full}
+ PLUTIA_ZSTD_LEVEL: "${ZSTD_LEVEL:-9}"
+ PLUTIA_BLOCK_SIZE_MB: "${BLOCK_SIZE_MB:-8}"
+ PLUTIA_THIN_CACHE_TTL: ${THIN_CACHE_TTL:-24h}
+ PLUTIA_THIN_CACHE_MAX_ENTRIES: ${THIN_CACHE_MAX_ENTRIES:-100000}
+ PLUTIA_CHECKPOINT_INTERVAL: ${CHECKPOINT_INTERVAL:-100000}
+ PLUTIA_COMMIT_BATCH_SIZE: ${COMMIT_BATCH_SIZE:-128}
+ PLUTIA_VERIFY_WORKERS: ${VERIFY_WORKERS:-}
+ PLUTIA_EXPORT_PAGE_SIZE: "${EXPORT_PAGE_SIZE:-1000}"
+ PLUTIA_REPLAY_TRACE: "${REPLAY_TRACE:-false}"
+ PLUTIA_LISTEN_ADDR: "${LISTEN_ADDR:-:8080}"
+ PLUTIA_POLL_INTERVAL: "${POLL_INTERVAL:-5s}"
+ PLUTIA_REQUEST_TIMEOUT: ${REQUEST_TIMEOUT:-10s}
+ PLUTIA_HTTP_RETRY_MAX_ATTEMPTS: ${HTTP_RETRY_MAX_ATTEMPTS:-8}
+ PLUTIA_HTTP_RETRY_BASE_DELAY: ${HTTP_RETRY_BASE_DELAY:-250ms}
+ PLUTIA_HTTP_RETRY_MAX_DELAY: ${HTTP_RETRY_MAX_DELAY:-10s}
+ PLUTIA_RATE_LIMIT_RESOLVE_RPS: ${RATE_LIMIT_RESOLVE_RPS:-30}
+ PLUTIA_RATE_LIMIT_RESOLVE_BURST: ${RATE_LIMIT_RESOLVE_BURST:-60}
+ PLUTIA_RATE_LIMIT_PROOF_RPS: ${RATE_LIMIT_PROOF_RPS:-10}
+ PLUTIA_RATE_LIMIT_PROOF_BURST: ${RATE_LIMIT_PROOF_BURST:-20}
+ PLUTIA_DATA_DIR: /var/lib/plutia
+ PLUTIA_MIRROR_PRIVATE_KEY_PATH: ${MIRROR_PRIVATE_KEY_PATH:-/var/lib/plutia/mirror.key}
+ ports:
+ - "8080:8080"
+ volumes:
+ - ./config.yaml:/etc/plutia/config.yaml:ro
+ - ./data:/var/lib/plutia
+ healthcheck:
+ test:
+ [
+ "CMD-SHELL",
+ "wget -q -O- http://127.0.0.1:8080/health >/dev/null || exit 1",
+ ]
+ interval: 30s
+ timeout: 5s
+ retries: 5
+ start_period: 20s
+ cpus: "${PLUTIA_CPU_LIMIT:-2.0}"
+ mem_limit: "${PLUTIA_MEM_LIMIT:-2g}"
+ pids_limit: 512
+ ulimits:
+ nofile:
+ soft: 65536
+ hard: 65536
+ logging:
+ driver: json-file
+ options:
+ max-size: "10m"
+ max-file: "5"
+ restart: unless-stopped
+
+ prometheus:
+ image: prom/prometheus:latest
+ command:
+ - "--config.file=/etc/prometheus/prometheus.yml"
+ - "--storage.tsdb.path=/prometheus"
+ - "--storage.tsdb.retention.time=7d"
+ volumes:
+ - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
+ - ./prometheus-data:/prometheus
+ ports:
+ - "9090:9090"
+ restart: unless-stopped