## P2P Connectivity Fixes - **Root Cause**: mDNS discovery was conditionally disabled in Task Execution Engine implementation - **Solution**: Restored always-enabled mDNS discovery from working baseline (eb2e05f) - **Result**: 9/9 Docker Swarm replicas with working P2P mesh, democratic elections, and leader consensus ## Dynamic Version System - **Problem**: Hardcoded version "0.1.0-dev" in 1000+ builds made debugging impossible - **Solution**: Implemented build-time version injection via ldflags - **Features**: Shows commit hash, build date, and semantic version - **Example**: `CHORUS-agent 0.5.5 (build:9dbd361, 2025-09-26_05:55:55)` ## Container Compatibility - **Issue**: Binary execution failed in Alpine due to glibc/musl incompatibility - **Solution**: Added Ubuntu-based Dockerfile for proper glibc support - **Benefit**: Reliable container execution across Docker Swarm nodes ## Key Changes - `internal/runtime/shared.go`: Always enable mDNS discovery, dynamic version vars - `cmd/agent/main.go`: Build-time version injection and display - `p2p/node.go`: Restored working "🐝 Bzzz Node Status" logging format - `Makefile`: Updated version to 0.5.5, proper ldflags configuration - `Dockerfile.ubuntu`: New glibc-compatible container base - `docker-compose.yml`: Updated to latest image tag for Watchtower auto-updates ## Verification ✅ P2P mesh connectivity: Peers exchanging availability broadcasts ✅ Democratic elections: Candidacy announcements and leader selection ✅ BACKBEAT integration: Beat synchronization and degraded mode handling ✅ Dynamic versioning: All containers show v0.5.5 with build metadata ✅ Task Execution Engine: All Phase 4 functionality preserved and working Fixes P2P connectivity regression while preserving complete Task Execution Engine implementation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
43 lines
1.1 KiB
Docker
43 lines
1.1 KiB
Docker
# CHORUS - Ubuntu-based Docker image for glibc compatibility
|
|
FROM ubuntu:22.04
|
|
|
|
# Install runtime dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
ca-certificates \
|
|
tzdata \
|
|
curl \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Create non-root user for security
|
|
RUN groupadd -g 1000 chorus && \
|
|
useradd -u 1000 -g chorus -s /bin/bash -d /home/chorus -m chorus
|
|
|
|
# Create application directories
|
|
RUN mkdir -p /app/data && \
|
|
chown -R chorus:chorus /app
|
|
|
|
# Copy pre-built binary from build directory
|
|
COPY build/chorus-agent /app/chorus-agent
|
|
RUN chmod +x /app/chorus-agent && chown chorus:chorus /app/chorus-agent
|
|
|
|
# Switch to non-root user
|
|
USER chorus
|
|
WORKDIR /app
|
|
|
|
# Expose ports
|
|
EXPOSE 8080 8081 9000
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
CMD curl -f http://localhost:8081/health || exit 1
|
|
|
|
# Set default environment variables
|
|
ENV LOG_LEVEL=info \
|
|
LOG_FORMAT=structured \
|
|
CHORUS_BIND_ADDRESS=0.0.0.0 \
|
|
CHORUS_API_PORT=8080 \
|
|
CHORUS_HEALTH_PORT=8081 \
|
|
CHORUS_P2P_PORT=9000
|
|
|
|
# Start CHORUS
|
|
ENTRYPOINT ["/app/chorus-agent"] |