Conversation
…otlib and pymetalink higher, pin proj<=9.7.1, unpin intake-xarray and jupyter-archive, add vcs tools Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
…mamba Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
|
I'm currently being held up by a weird error in the latest |
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
… frameworks, update jupyterlab extensions Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
|
Note: For the final release, the tag should be |
|
FYI @tlvu This PR has become a total rewrite; Full details of my approach will follow. I've removed a lot of brittle workarounds and need to speak to you about design and what can/should be broken. Building the image is not only now faster, but also a lot cleaner. |
tlvu
left a comment
There was a problem hiding this comment.
First pass review, clean up looks good.
…ck, activate birdy environment Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
…ult repo for users who use conda (already set for mamba and micromamba) Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
3a3fc3b to
db20d18
Compare
Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
|
Do not force push, this breaks all tags that point to older commit hash. |
| ENV DEBIAN_FRONTEND=noninteractive | ||
|
|
||
| # Install conda and mamba in base for mamba_gator | ||
| RUN micromamba install --yes --name base "conda>=4.7.12" "mamba>=2.0" && \ |
There was a problem hiding this comment.
We have to install conda and mamba? Isn't micromamba a replacement for both of them?
I only have micromamba installed on my machine and I can do everything, just have to remember to type micromamba instead of conda or mamba.
There was a problem hiding this comment.
If mamba and conda aren't present, I find that mamba-gator doesn't recognize the base kernel properly. I can try removing it though.
There was a problem hiding this comment.
Removing mamba and conda from base. Package resolution is really slow (~3 mins vs 20 seconds):

The birdy environment is also no longer listed.
...
[I 2026-03-25 13:37:56.188 ServerApp.mamba_gator] No available packages list in cache.
[I 2026-03-25 13:37:56.342 LabApp] Build is up to date
[I 2026-03-25 13:38:35.283 ServerApp.mamba_gator] No available packages list in cache.
...
There was a problem hiding this comment.
Oh weird ! So then it was more or less useless to use micromamba as base image ! We could have used the mamba base image instead !
There was a problem hiding this comment.
For future reference, we can drop conda according to the docs of mamba_gator. This should be done once we come back to redoing the base image.
| ARG MAMBA_DOCKERFILE_ACTIVATE=1 | ||
|
|
||
| # Set birdy as the default kernel | ||
| RUN echo "c.MultiKernelManager.default_kernel_name = 'birdy'" >> /etc/jupyter/jupyter_server_config.py |
There was a problem hiding this comment.
This do not work, remove or comment out to not give false idea.
There was a problem hiding this comment.
Are you sure? I am seeing a difference when it comes to the kernel order.
There was a problem hiding this comment.
Oh, I though, via our discussions, that this kernel setting is to activate the kernel by default. So this is only to change the display ordering of the kernel?
Can you update the comment to clarify it is for default kernel in the selection list display ordering, not for automated activation?
There was a problem hiding this comment.
This sets the default ipython kernel in Jupyterlab environment, not the same as activating the birdy environment; These are two different things! I think the comment is clear enough.
| - mercurial | ||
| # openssh | ||
| # https://anaconda.org/channels/conda-forge/packages/openssh/overview | ||
| - openssh |
There was a problem hiding this comment.
I installed it for git+ssh support, but I realize now that when people use jupyterlab-git, they aren't necessarily pushing changes back to GitHub.
Do you think users might want to do that though? Would require them pushing ssh credentials into their writeable workspace.
There was a problem hiding this comment.
Oh I though (never tried) user could already push using the jupyterlab-git plugin !
You are adding openssh to support git push on the cli? Or because git push using jupyterlab-git plugin do not work?
I think supporting the git cli is a good idea.
I don't force push to remove any commits when a tag is involved. Commits with a |
…nment activation Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
The compare link on github did not show what commits are affected, just the change between the force push. I was simply reminding you the danger of force push. Agreed that force push that only affect commits after the last tag is safe. However, in the heat of action, it is easy to forget when is the last tag so best to not use force push at all on a big PR with multiple existing tags. In a small PR, without existing tags, it is OK because the risk of error is much smaller. |
…he conda installed in opt/conda Signed-off-by: Trevor James Smith <10819524+Zeitsperre@users.noreply.github.com>
|
Update 2026-03-25: This new base image exposes a few major issues with the spawn commands of our Jupyterhub instance. Once #161 is merged and deployed as the new stable, we should come right back to this. Problems to resolve:
It might be worthwhile to reach out to the https://github.com/bird-house/birdhouse-deploy maintainers to see if we can find a solution to some of these problems. |



Overview
This PR prepares the next major update of the Jupyter image of PAVICS (2026-03).
The goal of this update is to update the Ouranos library offerings as well as remove several older workarounds and lift several dependency pins. It also updates the base Python from 3.11 to 3.12.
The most significant changes are that the base image is now
mambaorg/micromamba, which is the officialmicromambaimage, andjupyterlabis now v4.x (previously 3.x). For the base image, this saves us the work of needing to installmicromambaand also saves us the hassle of needing to set channel priority. It's also much slimmer than the previous base image. For the newjupyterlab, many workarounds and the functionality from older/deprecated plugins are now built in. The image not only builds faster (GitHub CI: 17 mins → 15 mins), but it is also slightly smaller (~150 MB from previous).Building on #157, several system packages have been replaced with
conda-forgeequivalents. As it stands, the only package installed viaaptis the XKCD font (fonts-humor-sans).launchcontainerandlaunchnotebookno longer overwrite UID and GID (fails inzsh) and instead now useUSER_IDandGROUP_IDfor call substitutions. They also no longer use back-tick commands:is now:
I've removed the x11-utils` as I'm not sure if it is actually required (what are we using it for?).
Changes
Replaces base image
continuumio/miniconda3withmambaorg/micromamba.birdynow uses Python 3.12.Replaces all
condacalls withmicromambaones.mambaas a requirement forgatoronlySimplifies the two-stage
micromamba createfor initializing thebirdyenvironment.Migrates system installation of the following libraries to the
environment.ymlfile:firefox(no longer usingfirefox-esr)gitmercurialpatchunzipUpdates
jupyterlabfrom v3.x to v4.x (current)Removes the
jupyter labcalls for installing/building extensions in Dockerfile.Adds three new
jupyterlabextensions:jupyterlab-geojson(geojson file visualizer)jupyterlab-logout(dedicated logout button in top-right) andjupyterlab-theme-toggler(dedicated light/dark theme toggle in top-right):Jupyter env changes:
Testing Checklist
Related Issue / Discussion
Matching notebook fixes:
Deployment to PAVICS: PR URL
Jenkins-config changes for new notebooks: PR URL
Other issues found while working on this one
Previous release: PR URL
Additional Information
Full diff of the conda env export:
https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/compare/PREVIOUS-release-py###-######...NEW-release-py###-######
Full new conda env export:
https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/blob/NEW-release-py###-######/docker/saved_buildout/conda-env-export.yml
DockerHub build log:
https://github.com/Ouranosinc/PAVICS-e2e-workflow-tests/blob/NEW-release-py###-######/docker/saved_buildout/docker-buildlogs.txt