Gilfeather/furnace

🐳 Optimize Docker image size

Aperta

#8 aperta il 16 lug 2025

 (0 commenti) (0 reazioni) (0 assegnatari)Rust (5 fork)auto 404
good first issuehelp wanted

Metriche repository

Star
 (64 stelle)
Metriche merge PR
 (Nessuna PR mergiata in 30 g)

Descrizione

Description

Create a multi-stage Dockerfile to reduce the final image size and improve deployment efficiency.

Acceptance Criteria

  • Create optimized multi-stage Dockerfile
  • Use Alpine or distroless base image for final stage
  • Final image should be under 50MB
  • Include only necessary runtime dependencies
  • Add .dockerignore file to exclude unnecessary files
  • Update README with Docker usage instructions

Current Advantages

The switch to built-in models provides significant advantages for Docker optimization:

  • ✅ No external model files to copy (models compiled into binary)
  • ✅ Smaller attack surface (no external dependencies)
  • ✅ Faster startup (no model loading from disk)
  • ✅ Single binary deployment

Implementation Guidance

  • Use rust:alpine for build stage
  • Use scratch or alpine for runtime stage
  • Copy only the furnace binary (no model files needed)
  • Consider static linking for zero dependencies
  • Test with --model-name resnet18 (built-in model)
  • Update .dockerignore to exclude models/ directory

Expected Image Size

With built-in models, the final image should be significantly smaller:

  • Binary size: ~4.5MB
  • Base image: ~5MB (Alpine) or ~2MB (distroless)
  • Target: Under 20MB (more aggressive than original 50MB target)

Estimated Difficulty

Easy - Half day (easier due to built-in models)

Guida contributor