diff options
| author | Fuwn <[email protected]> | 2026-02-28 05:58:19 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-02-28 05:58:19 -0800 |
| commit | 548de8043e1309f99839eea8b1f5801c4e41b3f2 (patch) | |
| tree | c2c054ecbdaaf3b28ed0467713a05c0ae799c6f1 /docker-compose.yaml | |
| parent | chore(compose): add mirror and resolver mode overrides (diff) | |
| download | plutia-test-main.tar.xz plutia-test-main.zip | |
Diffstat (limited to 'docker-compose.yaml')
| -rw-r--r-- | docker-compose.yaml | 80 |
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 |