AI generated
Last updated on

Expanding my Docker Setup


By default, Astro keeps images in the repository and optimizes them during the build. Since this causes the repo to bloat over time and images are versioned unnecessarily when changes occur, I extended my Docker setup and adapted Astro.

MinIO

I introduced the object storage MinIO. Through this service, I can upload and also serve images.

Unfortunately, the introduction of MinIO also brought small problems. The developers of MinIO stopped providing “free” Docker images in October 2025. Additionally, the MinIO Web UI provides no way to configure buckets. Therefore, I will replace this service as soon as I have found a suitable alternative.

OpenS3 Console

To bypass the problem with the MinIO Web UI, I added another service to the Docker setup. The Web UI I use for MinIO is OpenS3 Console. This gives me the ability to configure buckets and adapt them to my needs.

Adjustments to Astro

To connect Astro to external assets, I had to make a few adjustments (e.g., allowing external images). Now, Astro downloads the images from my bucket during the build, optimizes them, and serves them upon request.

So, in principle, Astro works as before: Images are stored optimized in the code and are served by Astro. The only thing that changed is the source. The images are now pulled from my bucket during the build.

Update

Since there were issues with MinIO, I tested Garage as an alternative object storage but was also unsatisfied with it. Now I have decided on Cloudinary. This is a Digital Asset Management System that also offers a free tier.

The logic in Astro remains the same: Assets are downloaded at build time, optimized, and saved locally for delivery.