Skip to content

Support building images with Pixi #1426

Open
@mfisher87

Description

@mfisher87

Proposed change

Enable building images with pixi using pixi.toml as a configuration file. This is significantly faster (over 10x for an environment I'm working on) compared to micromamba!

Note: This is different than #1339 ; instead of supporting the pixi lockfile format with conda-lock, I want to use pixi as an alternative to conda (i.e. environment.yml and pixi.toml would be mutually exclusive config files) to speed up builds.

Alternative options

  • Writing a fully custom Dockerfile, but that's missing the value of repo2docker!

Who would use this feature?

I would! ;)

I personally believe that the pixi user experience will win out over conda in the long run because it has a superior user experience (i.e. you don't have to manage your specification by hand with pixi). Having it easily available on JupyterHubs will help facilitate the transition.

How much effort will adding it take?

I dunno... yet! I want to find time to dedicate to helping out with repo2docker to learn more. It feels to me like a week of dedicated work could make significant progress. Naive? 😆

Who can do this work?

Knowledge about pixi -- its model is different than conda in that it manages projects, not environments. Project environments are referenced by their location on the filesystem, not by their global name. (prefix-dev/pixi#188). There's a conflict there with how a JupyterHub image has a "global" environment activated by default. Pixi has some affordances for this behavior (https://pixi.sh/latest/reference/cli/pixi/shell-hook/#usage), though. I am a pixi user for the happy path workflow, haven't messed with using pixi in docker images before, but I feel comfortable figuring it out.

Knowledge about Docker, of course :) I feel pretty competent in this space to get my hands dirty.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions