The runtime image carries only what serving needs — the Julia runtime, an already-precompiled depot, exiftool, and optionally github-linguist. The package registry, git clones, and the Ruby/C toolchain that builds rugged all stay in earlier stages. Two things shape the build. Dependencies are instantiated and precompiled in a layer keyed only on Project.toml/Manifest.toml, so a src/ edit rebuilds in seconds rather than minutes; a stub src/FileServer.jl satisfies Pkg's root-package check there. And github-linguist, the one heavy optional dependency, is behind WITH_LINGUIST: it degrades gracefully (stage 4 keeps natural-language enrichment and warns), so building it out is a supported ~160MB saving. All stage directories are pointed under /data via the FS_*_DIR variables so one volume holds the whole in-flight working set, and data/ is excluded from the build context. Claude-Session: https://claude.ai/code/session_01KMNwyqLS3ns6uwWHGDGdAQ
17 lines
342 B
Plaintext
17 lines
342 B
Plaintext
# The pipeline working set (17G here) belongs in a volume, not the image.
|
|
data/
|
|
.git/
|
|
test/
|
|
# Benchmark / training / calibration harnesses are dev tools, not runtime.
|
|
bin/bench.jl
|
|
bin/bench_model.jl
|
|
bin/bench_stage1.jl
|
|
bin/bench_stage2.jl
|
|
bin/cluster_calibrate.jl
|
|
bin/train.jl
|
|
bin/send_dir.sh
|
|
Dockerfile
|
|
docker-compose.yml
|
|
.dockerignore
|
|
*.md
|