JuliaCon 2025

Dockerfiles for Julia: effective caching & depot management
2025-07-23 , Lawrence Room 120 - REPL Main Stage

A great Dockerfile for Julia should:
1. Contain a depot with a precompiled Manifest.
2. Rebuild fast and efficiently - only changed code should be recompiled.
3. Be as light as possible with no unnecessary files in its layers.

In this talk I will present some clever ways on how to abuse Dockerfile RUN --mount to achieve fully cached rebuilds. I will also share tips on how to manage your depot and solve other common issues a Julia user might experience when writing an advanced Dockerfile.


Containerization is considered a basic skill in a developer toolbox, so packaging up Julia code into images will definitely fall into a Julia developer's task list sooner than later. Writing a naive Dockerfile for Julia is simple, but writing a great one is not a trivial task.
I've written several Dockerfiles for various Julia projects and I will try to share all the tricks on how to make your Dockerfile better for both development and production use cases.

Please note this talk assumes at least a basic to intermediate understanding of Docker and building images. Introductory concepts will not be covered as part of the talk.

Link to repository containing examples https://github.com/krynju/docker_julia_juliacon2025

Software Engineer at JuliaHub, Cluster Team

I've been involved with Julia since 2018. Currently working on the core JuliaHub platform mostly around backend and cluster related capabilities. I graduated from Warsaw University of Technology with a M.Sc. in Computer Science and B.Sc. in Automatic Control and Robotics.

https://github.com/krynju