Building a CI-friendly integration test environment for Apache Iceberg REST Catalog is challenging when docker-compose isn't available in the pipeline. This post walks through collapsing a multi-service data lake stack (HDFS, Hive Metastore, MinIO, Iceberg REST Catalog) into a single Docker image under 5GB. Key techniques covered include Docker layer ordering for faster rebuilds, aggressive image size reduction (removing docs/examples saves 500MB+), deduplicating shared JVM libraries with symlinks, and using Supervisor to manage multiple services in one container. A Java smoke test client that validates each subsystem independently is recommended for faster debugging. Two common Iceberg+MinIO failure modes are detailed: credential misalignment between client and server, and bucket path-style access not being applied server-side.
Sort: