Part of this week consisted of working on some bigger architectural ideas rather being heads down writing code. Finding a clean boundary within a system can be hard but I think we might have managed it, and this particular idea will make the system simpler as a whole, and hopefully sets a precedent for likely future expansion. The prototype seems to make sense, so only time will tell how well it works out.
Docker related problems rearing their head this week. I built some Docker images recently using Alpine Linux as the base operating system. I chose Alpine because it’s well supported and is very small so you can keep the overall size of Docker images quite small. The Docker community seems to have decided to standardize on Dockerfiles with either Alpine or Ubuntu as the base OS, so Alpine felt like a safe choice.
Dockerfileinstalls various packages using Alpine’s
apkand specifies exact versions. The idea being that this image should be deterministic, that is, I could build it over and over and get the same result at the end.
Well, my Docker image started failing to build because the package version I specified for one of my dependencies was no longer available. It turns out that Alpine doesn’t keep old versions of a package around when a new version is released. Considering Alpine is very popular in combination with Docker this decision seems strange.
A move away from Alpine seems probable, which is a shame.
The GitHub Actions Marketplace has a few workflows available to send notifications to Slack, but the top two by stars at the time of writing are Slack Notify and action-slack. I decided upon action-slack to improve the visibility of some build processes. It seemed slightly less fiddly than the other options. I’ve been enjoying automating more things with Actions recently.