Maybe this is a little bit off-topic. I would like to ask how you manage your dockerfile.
I have a git repo hosting my configurations (docker-compose, traefik, etc). Then, I have a python script that reads data from JSON, renders the placeholder inside these files (the {{replace_me}}
) by an actual value and outputs them to another directory. Finally, I cd
to that directory and run docker-compose up -f ...
. (This approach takes inspiration from the terraform
templatefile
)
That JSON file is generated by some terraform code, along with terraform code for other stuffs (storage bucket, vps, dns, etc).
It works well for me so far. Especially for:
- templating
traefik toml
configuration (I like it a lot more than the label approach). - secret in the docker env file (so my docker.env file has the form of
secrect={{secret}}
.
I know most templating docker part can be replaced by directly interpolating with environment variables but I don’t really like it because it seems environment variables are not persistent.
Do you have any suggestions for my workflow ? I am always feel a litte bit off about this approach.
I was recently helping someone working on a mini-project to do a bit of parsing of docker compose files, when I discovered that the docker compose spec is published as JSON Schema here.
I converted that into TypeScript types using JSON Schema to TypeScript. So I can create docker compose config in code and then just export it as yaml - I have a build/deploy script that does this at the end.
But now the great thing is that I can export/import that config, share it between projects, extend configs, mix-in, and so on. I’ve just started doing it and it’s been really nice so far, when I get a chance and it’s stabilised a bit I’m going to tidy it up and share it. But there’s not much I’ve added beyond the above at the moment (just some bits to mix-in arrays, which was what set me off on this whole thing!)
so you are also generating the docker-compose from code. I think I am looking for something that aware of both templating and docker-compose deployment because right now, at the end of the day, I am still have to run
docker-compose up -f ...
whilehelm
can do both templating and deployment.