A handy basic and base image comprising of;
- Alpine Linux v3.7. Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc v1.1.16 and BusyBox.
- Confd v0.14. Confd is a lightweight configuration (file) management tool that can use data stored in etcd, consul, dynamodb, redis, vault, zookeeper and others as well as environment variables.
Use tag v4 for Alpine v3.6, musl v1.1.16 and Confd v0.13.0.
Use tag v3 for Alpine v3.4, musl v1.1.15 and Confd v0.12-alpha 3.
Use tag v1 for Alpine v3.3, musl v1.1.12 and Confd v0.12-alpha 3.
I'd expect you use this image as a simple, small base for others that run one (perhaps two) services that require dynamic runtime configuration of some sort. For instance, a HAProxy process that you'd configure at startup with Confd based on a number of environment variables or some other 'source of truth'.
Building an Image
In a Dockerfile you'd use this image as a base like so:
You may want to copy across a confd configuration file (optional):
COPY confd/confd.toml /etc/confd/confd.toml
Then copy in your template and template resource files:
COPY confd/tmpl/* /etc/confd/templates/
COPY confd/toml/* /etc/confd/conf.d/
You'd run confd within your container, perhaps in an entrypoint script or cron job, like so (using environment variable data in this case):
/usr/bin/confd -backend env -onetime
Go to the Confd Github page for more information on alternative parameters and options.
Kelsey Hightower for Confd and more besides.
Details on how the confd binary included in this image is built can be found here.