-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build worker container with custom conda channel #214
base: main
Are you sure you want to change the base?
Conversation
The core approach here definitely works from a technical standpoint, as partially shown in CI here already, as well as further in my local testing. I just need to get to the bottom of this tree of packages (which is not that long) to get a sense of if it actually has a container size benefit for us. Will report back soon! |
For the scale of this PR, I concede that it is not as well documented (in prose, that is) as it could be, but I hope the clarity of the implementation makes up for that shortcoming. In terms of what the implementation is, here are the main points:
Note that there is a bit of noise in this PR because I ended up needing to bump pre-commit/mypy versions, which led to some linting changes that are not directly related to above. Next steps:
|
To any prospective reviewers here ... as I mentioned to @walljcg earlier today... I am exploring https://pixi.sh/latest/ as an alternative to micromamba and at the risk of still not being done with this ... this is seemingly like an INCREDIBLY good alternative (faster, more reproducible, simpler). The fundamental structure here can remain somewhat similar, but we can probably reduce effort, build time, and complexity by using |
Ok yes so clearly Almost done with that over in #220, can finish Monday. Reviewers can hold off until that is done, I will re-ping here 😄 |
This is an experiment to see if this approach will allow us to build smaller worker containers for deployment.
The basic concept is that:
/env/python/lib/
directory for our conda env is ~2GB!conda-forge
channel is a possibility, but that channel does not move fast enough for our pace of iteration (I have hosted packages there before), and is better suited IMHO to distribution of packages to users, not necessarily for hosting packages for our own deployment needs.ps-mem
is used to buildlithops
, the local build of ourlonboard
fork is used to buildecoscope
, etc.)environment.yml
that is similar to the one we are currently using, except which pulls all of these dependencies from the local channel (rather than pip)So far, the tree of custom packages I have come up with looks like this: