Packaging & Deployment Options for Scala Applications / Services
summary
Compares four concrete packaging paths for Scala apps: Buildpacks, Jib, sbt-native-packager (Docker), GraalVM native-image. Demonstrates Buildpacks producing a 691 MB image, Jib and sbt Docker producing ~138 MB images with layered dependency and class/jar separation for cache-friendly rebuilds, and GraalVM producing a 12 MB statically linked executable image. Shows pushing images to Container Registry and deploying to Cloud Run, explains GraalVM tradeoffs (downgrade to Scala 2.13, musl/static linking, reflection and method-handle workarounds, prefer CI/CD for native builds).
AI-written summary · about
chapters (8)
- 0:00Introduction to Scala Docker
- 1:24Packaging with sbt Native Packager
- 2:49Build Packs Method
- 6:19Jib Containerization
- 9:50Traditional Docker with sbt
- 16:50GraalVM Native Image
- 25:40Comparison and Recommendations
- 27:05Q&A and Conclusion
related talks
46mDockerfiles, Buildpacks, Jib and more, best way to run Java code in Containers?
44msbt-native-packager - package all the things
49mJava Container Mastery: Optimizing Images Across Build Tools
51mJava applications containerized and deployed, make your buildpack edition
01h 03mPackaging And Deploying 5 Java Frameworks in 5 Ways
43mBuilding containers without DockerFile
01h 15mEvaluation of OSS Options to Build Container Images
45mBuilding & Managing Container Images at Scale with Cloud Native Buildpacks
