Yes the repo includes some files to make the thing work as a home-assistant add-on, but basically it works as a standalone container, which is the primary goal. The HA goal came in a second time, as there is no conflict at all between them…
If you dont have home-assistant, you can use the images, a simple docker pull will catch and download the correct image for your machine (x86, armv7, aarch64).
To resume, all the conf is done in the docker way through env vars…
The only detail that is really specific to HA is that the first one_shot service emoncms_pre.sh tries to read a /data/options.json file in the container. If this file exists (HA case), it takes the values coming from the HA add-on configuration panel. Otherwise, it takes the classic docker env parameters, which have default values in the dockerfile.
The dockerfile defines some args, which you can modulate at build time through a matrix, as everything is done by the github actions with the help of of QEMU in order to produce the multiarch images - emoncms/.github/workflows/emoncms.yml at main · Open-Building-Management/emoncms · GitHub
Some of these args are also redefined as env at the end of the Dockerfile as they are used by the one_shot services…
All the images are here :
https://hub.docker.com/r/alexjunk/emoncms/tags
From what I know, this is very classic docker technics and is not very complex to maintain, more easy than the Emonscripts for example.
Maybe the only thing which is not classic is that the dockerfile generates the s6 init structure. Generally people maintain the folders and files related to the s6-overlay aside, and they make a COPY into the image at build time (it is what they do at HA) but as it is a lot of files, often empty, I prefer to generate all those stuff dynamically within the dockerfile.