Files
bootnode/api/Dockerfile
T
zeekay 5d63821793 feat: enhance Lux fleet management with in-cluster + StatefulSet discovery
- Add StatefulSet discovery fallback for kubectl-deployed fleets (non-Helm)
- Add in-cluster mode: auto-detect pod ServiceAccount, skip kubeconfig fetch
- Add list_fleets_incluster() for direct K8s API fleet discovery
- Add get_statefulsets() to HelmDeployer for kubectl-based fleet listing
- Make helm_revision optional (null for non-Helm fleets)
- Add Lux devnet network (chain_id 96370), fix testnet chain_id (96368)
- Add in-cluster self-detection for /v1/infra/clusters endpoint
- Fix kubeconfig fetch: use raw HTTP (pydo can't deserialize YAML), doctl fallback
- Install kubectl in API Dockerfile for fleet management operations
2026-02-12 10:21:01 -08:00

29 lines
872 B
Docker

# syntax=docker/dockerfile:1
FROM python:3.12-slim
WORKDIR /app
# Install system dependencies + kubectl for fleet management
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
curl \
&& curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \
&& install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl \
&& rm kubectl \
&& rm -rf /var/lib/apt/lists/*
# Install uv for faster dependency installation
RUN pip install uv
# Copy project files
COPY pyproject.toml README.md ./
COPY bootnode/ bootnode/
# Install dependencies
# Hanzo SDKs are optional - in K8s, the KMS operator injects secrets as env vars
RUN uv pip install --system -e .
# Run the application
EXPOSE 8000
CMD ["uvicorn", "bootnode.main:app", "--host", "0.0.0.0", "--port", "8000"]