The "easiest" way to run docker images as cli tools.
I wanted to create an simple tool to run as a cli tool. The main problem was, that I ran my tool on ARM architecture and wanted to run it on x86 as well. The cross compilation was quite straight forward, with the docker cli:
docker buildx build --platform linux/amd64,linux/arm64 ...
The main problem was, that I wanted other people to use my tool and the default way to run a docker image requires the following steps:
- Start Docker Deamon
- Pull a current Image
- Run the Image and attach the current working directory as a volume
This is quite a lot of steps for a simple cli tool. Thats why I created this tool to run docker images with as little friction as possible.
- Prerequirements
- Docker
- NodeJS
- Install Dockeridoo:
# npm npm i -g dockeridoo
- Run an docker image as cli tool:
dodoo [image name] # for example dodoo fa7k/create-cards
- It detects if docker is already running on your system. If not, it starts the docker deamon.
- It pulls the latest image specified in the command.
- It runs the image with the current working directory as a volume. And any command line arguments will also be passed to the image.
Dockerfile:
FROM alpine:3.19 # choose a base image (preferably small)
# do whatever you want here
# These 2 lines are important to make the image work with Dockeridoo.
# The directory you started Dockeridoo will be supplied as the volume /workdir
# This way files from the host system can be accessed inside the container
VOLUME /workdir
WORKDIR /workdir
ENTRYPOINT ["your_cli_tool.sh"]
If you want your cli tool to be compatible across achitectures, you can use the following command to build your image:
docker buildx build --platform linux/amd64,linux/arm64 -t your_image_name .
Hint: make sure your base image was also built for multiple architectures 😉