# CHORUS - Simple Docker image using pre-built binary FROM alpine:3.18 # Install runtime dependencies RUN apk --no-cache add \ ca-certificates \ tzdata \ curl # Create non-root user for security RUN addgroup -g 1000 chorus && \ adduser -u 1000 -G chorus -s /bin/sh -D chorus # Create application directories RUN mkdir -p /app/data && \ chown -R chorus:chorus /app # Copy pre-built binary COPY 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"]