Gilfeather/furnace

🐳 Optimize Docker image size

開放

#8 建立於 2025年7月16日

 (0 則留言) (0 個反應) (0 位負責人)Rust (5 個分叉)auto 404
good first issuehelp wanted

倉庫指標

星標
 (64 顆星)
PR 合併指標
 (30 天內沒有已合併 PR)

描述

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)

貢獻者指南