🐳 Lightweight image with essential tools for a 3 Musketeers project.
The 3 Musketeers pattern suggests a make target to call a make _target using Compose. However, make would often be in big images like Golang stretch and not in small ones like Alpine. Not every project needs big images. There are solutions in the 3 Musketeers Guidelines to what to do when the desired image does not have make.
See Echo example.
Another suggested pattern is to zip your dependencies. Even big images like Golang stretch does not include zip. It does include tar which you can use but sometimes a zip file is required like when deploying your Lambda function to AWS.
Useful utility to use instead of wget.
The cherry on top! Cookiecutter is used for 3 Musketeers examples and this image allows use to generete them with the only need of Docker! Cookiecutter needs git to download from a url.
# build image
make build
# test image
make test
# go inside a 3Musketeers container
make shell
# use 3musketeers image to generate from a Cookiecutter template
docker run -it --rm -v $PWD:/opt/app -w /opt/app flemay/3musketeers cookiecutter https://github.com/flemay/3mkts-cookiecutter-echoThis image will always be built with the tag latest so tools will always be up to date. This may cause issues if any tool has a breaking change. For instance, if Cookiecutter introduces a breaking change then the Cookiecutter templates may need to be updated.
In a nutshell, any change to master triggers a Travis build and if the tests passed it triggers a Docker Hub build. The automatic build on Docker Hub has been disabled ensuring the build process goes only through Travis.
A cron task in Travis triggers a build every month making the image as fresh as possible automatically.