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)

贡献者指南