Skip to content

feat(docker): reproducible fula-gateway image for federated masters#30

Open
ehsan6sha wants to merge 2 commits into
mainfrom
phase-1.5-gateway-image
Open

feat(docker): reproducible fula-gateway image for federated masters#30
ehsan6sha wants to merge 2 commits into
mainfrom
phase-1.5-gateway-image

Conversation

@ehsan6sha

Copy link
Copy Markdown
Member

Adds docker/Dockerfile.gateway — a reproducible build recipe for the fula-gateway image (multi-stage: rust:1-bookworm builds -p fula-cli --bin fula-gateway; debian:bookworm-slim runtime; env-driven config; /data volume for the durable pin queue + registry CID).

Consumed by the federated-master installer (functionland/pinning-service update-scripts/join-as-master.sh — the compose "gateway" profile auto-enables when this image exists on the box). No gateway behavior changes.

E2E (test box, clean Ubuntu 24.04): image build + container serving the S3 API against the box's adopted kubo + cluster writer — results will be posted as a comment (part of the Phase 1.5 drill run).

Closes #29

🤖 Generated with Claude Code

ehsan6sha and others added 2 commits June 11, 2026 19:34
Multi-stage build of the fula-gateway bin (cargo build --release -p
fula-cli) on rust:1-bookworm with a slim Debian runtime. Env-driven
config only; /data volume for durable state (pin queue, registry CID).
Consumed by the federated-master installer in functionland/pinning-service
(gateway compose profile, auto-enabled when the image exists).

Closes #29

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…gateway

The pin queue, registry CID, and local-retain backlog default to
/var/lib/fula-gateway (config.rs); the /data volume was wrong - without a
mount there, pin retries/crash recovery silently degrade to
fire-and-forget. Found by the federated-master e2e (startup WARNs).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@ehsan6sha

Copy link
Copy Markdown
Member Author

E2E evidence (Phase 1.5 drill run on the clean Ubuntu 24.04 test box):

  • Image builds from this Dockerfile on the box (147 MB runtime).
  • The federated-master installer auto-enabled the gateway profile on detecting the image; fula-gateway-1 is healthy on :9000 against the box's adopted kubo (:5001) + cluster writer (:9094).
  • S3 API answers correctly: unauthenticated probe returns proper S3 AccessDenied XML / HTTP 403.
  • With the state volume at /var/lib/fula-gateway (fixed in ecb342a): startup logs show ✓ Pin queue (W.9.6) opened and Bucket registry persistence enabled — zero fire-and-forget warnings (the S2 "no pin silently missed" safeguard is active).

Full drill suite: functionland/pinning-service#47 (RESULT pass=18 fail=0).

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Phase 1.5: reproducible fula-gateway Docker image for federated masters

1 participant