For Continuous Integration (test, formatter, Credo) and deployment we’re using Dockerized versions of our apps. Looks pretty much the same as your script: we set MIX_ENV and there’s no need for mix clean. For local development, we use the regular flow.
In my experience with Docker, it is convenient to add the “deps” and “_build” folders to the .dockerignore file so that they are not mapped into the environment in which the image is built (forcing a recompile while the image is being constructed).
Your package is great. Just somehow I managed to update to Ecto 3, without any complaints from mix, to warn me to update ecto_interval also… Slightly disconcerting.
I also used docker, but had to migrate away due to complex interop with other services, and docker config issue.
From your docker experience, it seems more or less analogous to adding a mix deps.clean --all which makes builds slow, but perhaps that’s the only way to be 100% sure…
It is slower. I am also trying to make sure that all my dependencies are compiled in the architecture of the docker container, rather than having some of them that might have been built on my docker host machine. This would be particularly important if any of the dependencies included native code.