Meetup in Berlin: TIC Talks. Docker Challenges & Solutions: Building Complex Images, Optimizing Spring Apps

Are you an Ops Engineer or developer looking to optimize Docker images, tackle multi-architecture support, or streamline Spring apps? Join us to hear expert solutions and practical tips to elevate your Docker game!

Agenda:

 Part 1: The Worst Container Image I’ve Ever Built
Speaker: Jérôme Petazzoni (Enix)

Jérôme was part of the team that built and launched Docker. He worked there for 7 years. These days he teaches Kubernetes at Enix, a French Cloud Native shop. When he's not busy with computers, he collects musical instruments. He can arguably play the theme of Zelda on a dozen of them.

"I maintain a container image called "shpod". That means "shell in a pod", and I use it when teaching Kubernetes tutorials and workshops. It includes all the tools that I need when teaching my classes. There are some usual suspects like kubectl, kustomize, helm, k9s, or stern; and dozens more. Most of these tools can be installed with binary downloads or distro packages - but there are exceptions. Furthermore, I want to use Alpine as a base, but some tools are built for glibc, meaning that they don't work on Alpine out of the box. Finally, I want this image to be available across multiple architectures: Intel 64 bits, but also ARM (32 and 64 bits). That's a lot of requirements, and they will sometimes clash with each other!

In this talk, we'll see the resulting image. It's not pretty, but hey, it works!"

We'll show and talk about:

  • multi-stage builds (more than 30 stages in the final Dockerfile!)

  • native- vs cross-compilation: pros and cons, when to use which one, and how

  • mixing glibc and musl

  • dealing with native extensions in interpreted languages (e.g. with Node.js)

  • leveraging the Nix ecosystem in container images

If you want to see the final Dockerfile to know what we're getting into, it's right there. Warning, this is not for the faint of the heart!

https://github.com/jpetazzo/shpod/blob/main/Dockerfile

Part 2: Crafting the Ultimate Docker Image for Spring Applications
Speaker: Pasha Finkelshteyn (BellSoft)

Docker is the cornerstone of today's development! Let's overview quickly how we use it in JVM development, and then transition to practical examples. We will start with a simple Docker image containing a popular "one fat JAR" and look into its downsides (deployment speed, traffic volume). To address them, we will discuss the strategy of splitting the JAR into multiple layers and using multistage Dockerfiles, gradually improving our image. Join me to learn how to build the ultimate Docker image for Spring applications.

Years of experience in software engineering and the team's leading roles combined with Pasha's passion for Java made Pasha know all the hidden details in this IT niche.