DEV Community

Cover image for I Built ubun🔨ools, So You Don’t Have To
Viorel PETCU
Viorel PETCU

Posted on

I Built ubun🔨ools, So You Don’t Have To

Not sure how often this happens to others, but whenever I start a new project, I like to start with a blank slate. I do this to avoid unconsciously dragging in tools or methods from other projects that might not fit into the current tech stack.

So, typically, I check out the project and mount the directory into a fresh Ubuntu container like this:

git clone https://github.com/realvorl/ubuntools.git
cd ubuntools
Enter fullscreen mode Exit fullscreen mode
docker run -it --rm -v $(pwd):/work --workdir /work ubuntu:24.04 /bin/bash
Enter fullscreen mode Exit fullscreen mode

All set, right? Well, not quite. Let’s say I want to check the weather quickly:

root@20fb3c8cf2eb:/work# curl wttr.in
bash: curl: command not found # <--- and this is what I am talking about
root@20fb3c8cf2eb:/work# 
Enter fullscreen mode Exit fullscreen mode

I don’t always check the weather, but you get the point. I’ve already set everything up, but now I’m in a container where tools like curl, wget, jq, or even a simple editor like nano are missing. And if the container crashes, whatever I install now is gone. Frustrating, right?


The Solution: Ubun🔨ools

So, I built ubunTools—a lightweight Docker image generator that packages the tools I need in these situations. No more fumbling with missing dependencies or reinstalling them every time. With ubunTools, you pull the image, and boom—you’re ready to go.

Let me show you how this works:

1 add your list of tools to the workflow input form:

github workflow input form

2 put that list into an ENV variable:

adding tool list to env variables

adding tag to env variables

3 build the parameterized image:

parameterized docker build

4 push to docker hub:

using docker action to upload image

Here’s the same workflow, but this time using an image generated by ubunTools:

# Swapping ubuntu:24.04 with viorelpe/ubuntools:useful_REST_tools
docker run -it --rm -v $(pwd):/work --workdir /work viorelpe/ubuntools:useful_REST_tools /bin/bash

root@0325311145e2:/work# curl wttr.in
Weather report: 

      \   /     Clear 
       .-.      11 °C          
    ― (   ) ―   ↑ 6 km/h       
       `-’      10 km          
      /   \     0.0 mm          ...
                                ...
┌────────────────────────────── ...
│            Morning            ...
├────────────────────────────── ...
│    \  /       Partly Cloudy   ...
│  _ /"".-.     +22(21) °C      ...
│    \_(   ).   ↖ 5 km/h        ...
│    /(___(__)  10 km           ...
│               0.0 mm | 0%     ...
└────────────────────────────── ...

Enter fullscreen mode Exit fullscreen mode

Easy, right? Now, I’m good to go with all the tools I need.


Principle 1: Adding More Tools Shouldn’t Be Hard

One of my favorite things about ubunTools is how simple it is to expand. Need a new tool for a specific project? No problem! Just name it in the GitHub workflow inputs, trigger it, and the image will automatically update with the new tool(s). Minimal effort, maximum flexibility. It’s like a toolkit that grows with you as your needs evolve.


Principle 2: Keeping It Secure and Up-to-Date

Security matters, especially when dealing with Docker images. That’s why ubunTools includes a mechanism that keeps it in sync with the latest Ubuntu image. If the Ubuntu image changes (like when there’s a security fix), ubunTools rebuilds the image (at midnight) and pushes it to Docker Hub under the appropriate tag - overriding the previous one. You don’t have to worry about manual updates—it keeps everything secure and fresh.


Conclusion: A Toolkit That Works for You

Ubun🔨ools started as a personal solution to a common onboarding headache, and it’s already grown beyond what I imagined. Whether you’re probing APIs, aggregating data, or just needing a basic toolkit, ubunTools has you covered—and it’s easy to build on.

Check out ubunTools on GitHub 🚀. Don’t want to deal with creating your own Docker Hub account? No worries! Just create an issue on GitHub, and I’ll build the image for you. It’s just a few text fields and a click—no biggie.


Final Thoughts

I wanted to make my life easier, and now, with ubunTools, I hope it makes yours easier too. Whether you’re a developer who likes starting projects with a clean slate, or you just need a reliable, customizable toolkit, ubunTools is there for you. Let me know if you give it a spin!

badge


Top comments (0)