A Docker Development Build and Test Container where Projects are hammered into shape.
Anvil: a heavy iron block with a flat top and concave sides, on which metal can be hammered and shaped.
Base Image Debian:bullseye-slim.
A list of all Docker Image Tags can be found at Docker Hub
There are a variety of different containers and combinations that can be used. The tools and frameworks included in each are outlined below.
The following tools are contained within each build:
- Bash
- Dart SDK
- Git
- Powershell
Everything from the dart-*
image plus:
- Java + Maven
- Clojure + Leiningen
Everything from the dart-*
image plus:
- Azure Credential Provider
- .Net SDK
- Azure Functions Core Tools 4
Everything from the dart-*
image plus:
- Flutter
Everything from image plus:
- AWS CLI @ 1.x
- Azure CLI
Anvil has been split into several Images that can be combined in an attempt to reduce the overall size, and to narrow down the scope and purpose. As you can see, the Cloud infrastructure containers (the ones with the AWS and Azure CLI tools) are substantially larger than the others. The Docker tool Dive can be used to investigate the reason for this increase.
Each of my projects contain various automation scripts and utilities. Historically, these were written with Bash, however a need surfaced for enhanced cross-platform development support. Dart was selected as a high-level wrapper for its ease of use, performance, and native bridges.
The Cloud images contain both the AWS and Azure CLIs. Each of which is built using Python. The Azure CLI however
includes the Azure Python SDK and many unnecessary (even unused?) API versions of the azure-mgmt-network
SDK.
Azure SDK Trim could be used to remove some of this bloat, however it
comes with a risk that something may not work as intended.
Spoiler: Almost 900mb (uncompressed) is the Azure CLI