Skip to content

Instantly share code, notes, and snippets.

@minrk
Last active April 28, 2025 07:58
Show Gist options
  • Save minrk/10eca3a5894b499e25fcf0c0fe499257 to your computer and use it in GitHub Desktop.
Save minrk/10eca3a5894b499e25fcf0c0fe499257 to your computer and use it in GitHub Desktop.
locked derivate image from jupyter docker stack
name: base
channels:
- conda-forge
dependencies:
- _openmp_mutex=4.5=2_gnu
- alembic=1.15.2=pyhd8ed1ab_0
- annotated-types=0.7.0=pyhd8ed1ab_1
- anyio=4.9.0=pyh29332c3_0
- archspec=0.2.5=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_1
- argon2-cffi-bindings=21.2.0=py312hb2c0f52_5
- arrow=1.3.0=pyhd8ed1ab_1
- asttokens=3.0.0=pyhd8ed1ab_1
- async-lru=2.0.5=pyh29332c3_0
- async_generator=1.10=pyhd8ed1ab_2
- attrs=25.3.0=pyh71513ae_0
- babel=2.17.0=pyhd8ed1ab_0
- beautifulsoup4=4.13.4=pyha770c72_0
- bleach=6.2.0=pyh29332c3_4
- bleach-with-css=6.2.0=h82add2a_4
- blinker=1.9.0=pyhff2d567_0
- boltons=24.0.0=pyhd8ed1ab_1
- brotli-python=1.1.0=py312h6f74592_2
- bzip2=1.0.8=h68df207_7
- c-ares=1.34.5=h86ecc28_0
- ca-certificates=2025.4.26=hbd8a1cb_0
- cached-property=1.5.2=hd8ed1ab_1
- cached_property=1.5.2=pyha770c72_1
- certifi=2025.1.31=pyhd8ed1ab_0
- certipy=0.2.2=pyhd8ed1ab_0
- cffi=1.17.1=py312hac81daf_0
- charset-normalizer=3.4.1=pyhd8ed1ab_0
- colorama=0.4.6=pyhd8ed1ab_1
- comm=0.2.2=pyhd8ed1ab_1
- conda=25.3.1=py312h996f985_1
- conda-libmamba-solver=25.3.0=pyhd8ed1ab_0
- conda-package-handling=2.4.0=pyh7900ff3_2
- conda-package-streaming=0.11.0=pyhd8ed1ab_1
- cpp-expected=1.1.0=h17cf362_1
- cryptography=44.0.2=py312he723553_0
- debugpy=1.8.14=py312h6f74592_0
- decorator=5.2.1=pyhd8ed1ab_0
- defusedxml=0.7.1=pyhd8ed1ab_0
- distro=1.9.0=pyhd8ed1ab_1
- exceptiongroup=1.2.2=pyhd8ed1ab_1
- executing=2.2.0=pyhd8ed1ab_0
- fmt=11.1.4=h97e1849_1
- fqdn=1.5.1=pyhd8ed1ab_1
- frozendict=2.4.6=py312hb2c0f52_0
- greenlet=3.2.1=py312h6f74592_0
- h11=0.16.0=pyhd8ed1ab_0
- h2=4.2.0=pyhd8ed1ab_0
- hpack=4.1.0=pyhd8ed1ab_0
- httpcore=1.0.9=pyh29332c3_0
- httpx=0.28.1=pyhd8ed1ab_0
- hyperframe=6.1.0=pyhd8ed1ab_0
- icu=75.1=hf9b3779_0
- idna=3.10=pyhd8ed1ab_1
- importlib-metadata=8.6.1=pyha770c72_0
- importlib_resources=6.5.2=pyhd8ed1ab_0
- ipykernel=6.29.5=pyh3099207_0
- ipython=9.2.0=pyhfb0248b_0
- ipython_genutils=0.2.0=pyhd8ed1ab_2
- ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0
- isoduration=20.11.0=pyhd8ed1ab_1
- jedi=0.19.2=pyhd8ed1ab_1
- jinja2=3.1.6=pyhd8ed1ab_0
- json5=0.12.0=pyhd8ed1ab_0
- jsonpatch=1.33=pyhd8ed1ab_1
- jsonpointer=3.0.0=py312h996f985_1
- jsonschema=4.23.0=pyhd8ed1ab_1
- jsonschema-specifications=2025.4.1=pyh29332c3_0
- jsonschema-with-format-nongpl=4.23.0=hd8ed1ab_1
- jupyter-lsp=2.2.5=pyhd8ed1ab_1
- jupyter_client=8.6.3=pyhd8ed1ab_1
- jupyter_core=5.7.2=pyh31011fe_1
- jupyter_events=0.12.0=pyh29332c3_0
- jupyter_server=2.15.0=pyhd8ed1ab_0
- jupyter_server_terminals=0.5.3=pyhd8ed1ab_1
- jupyterhub-base=5.3.0=pyhda7c55b_0
- jupyterhub-singleuser=5.3.0=h4422900_0
- jupyterlab=4.4.1=pyhd8ed1ab_0
- jupyterlab_pygments=0.3.0=pyhd8ed1ab_2
- jupyterlab_server=2.27.3=pyhd8ed1ab_1
- keyutils=1.6.1=h4e544f5_0
- krb5=1.21.3=h50a48e9_0
- ld_impl_linux-aarch64=2.43=h80caac9_4
- libarchive=3.7.7=h91b5310_4
- libcurl=8.13.0=h6702fde_0
- libedit=3.1.20250104=pl5321h976ea20_0
- libev=4.33=h31becfc_2
- libexpat=2.7.0=h5ad3122_0
- libffi=3.4.6=he21f813_1
- libgcc=14.2.0=he277a41_2
- libgcc-ng=14.2.0=he9431aa_2
- libgomp=14.2.0=he277a41_2
- libiconv=1.18=hc99b53d_1
- liblzma=5.8.1=h86ecc28_0
- libmamba=2.1.0=hbe5a9cd_0
- libmambapy=2.1.0=py312h033ebb1_0
- libnghttp2=1.64.0=hc8609a4_0
- libnsl=2.0.1=h31becfc_0
- libsodium=1.0.20=h68df207_0
- libsolv=0.7.30=h62756fc_0
- libsqlite=3.49.1=h5eb1b54_2
- libssh2=1.11.1=h18c354c_0
- libstdcxx=14.2.0=h3f4de04_2
- libstdcxx-ng=14.2.0=hf1166c9_2
- libuuid=2.38.1=hb4cce97_0
- libxcrypt=4.4.36=h31becfc_1
- libxml2=2.13.7=he060846_1
- libzlib=1.3.1=h86ecc28_2
- lz4-c=1.10.0=h5ad3122_1
- lzo=2.10=h31becfc_1001
- mako=1.3.10=pyhd8ed1ab_0
- mamba=2.1.0=hf3e92e0_0
- markupsafe=3.0.2=py312h74ce7d3_1
- matplotlib-inline=0.1.7=pyhd8ed1ab_1
- menuinst=2.2.0=py312h996f985_0
- mistune=3.1.3=pyh29332c3_0
- nbclassic=1.3.0=pyh29332c3_0
- nbclient=0.10.2=pyhd8ed1ab_0
- nbconvert-core=7.16.6=pyh29332c3_0
- nbformat=5.10.4=pyhd8ed1ab_1
- ncurses=6.5=ha32ae93_3
- nest-asyncio=1.6.0=pyhd8ed1ab_1
- nlohmann_json=3.11.3=h0a1ffab_1
- notebook=7.4.1=pyhd8ed1ab_0
- notebook-shim=0.2.4=pyhd8ed1ab_1
- oauthlib=3.2.2=pyhd8ed1ab_1
- openssl=3.5.0=hd08dc88_0
- overrides=7.7.0=pyhd8ed1ab_1
- packaging=25.0=pyh29332c3_1
- pamela=1.2.0=pyhd8ed1ab_1
- pandocfilters=1.5.0=pyhd8ed1ab_0
- parso=0.8.4=pyhd8ed1ab_1
- pexpect=4.9.0=pyhd8ed1ab_1
- pickleshare=0.7.5=pyhd8ed1ab_1004
- pip=25.1=pyh8b19718_0
- pkgutil-resolve-name=1.3.10=pyhd8ed1ab_2
- platformdirs=4.3.7=pyh29332c3_0
- pluggy=1.5.0=pyhd8ed1ab_1
- prometheus_client=0.21.1=pyhd8ed1ab_0
- prompt-toolkit=3.0.51=pyha770c72_0
- psutil=7.0.0=py312hb2c0f52_0
- ptyprocess=0.7.0=pyhd8ed1ab_1
- pure_eval=0.2.3=pyhd8ed1ab_1
- pybind11-abi=4=hd8ed1ab_3
- pycosat=0.6.6=py312hb2c0f52_2
- pycparser=2.22=pyh29332c3_1
- pydantic=2.11.3=pyh3cfb1c2_0
- pydantic-core=2.33.1=py312h8cbf658_0
- pygments=2.19.1=pyhd8ed1ab_0
- pyjwt=2.10.1=pyhd8ed1ab_0
- pysocks=1.7.1=pyha55dd90_7
- python=3.12.10=h1683364_0_cpython
- python-dateutil=2.9.0.post0=pyhff2d567_1
- python-fastjsonschema=2.21.1=pyhd8ed1ab_0
- python-json-logger=2.0.7=pyhd8ed1ab_0
- python_abi=3.12=7_cp312
- pytz=2025.2=pyhd8ed1ab_0
- pyyaml=6.0.2=py312hcc812fe_2
- pyzmq=26.4.0=py312h2427ae1_0
- readline=8.2=h8382b9d_2
- referencing=0.36.2=pyh29332c3_0
- reproc=14.2.5.post0=h86ecc28_0
- reproc-cpp=14.2.5.post0=h5ad3122_0
- requests=2.32.3=pyhd8ed1ab_1
- rfc3339-validator=0.1.4=pyhd8ed1ab_1
- rfc3986-validator=0.1.1=pyh9f0ad1d_0
- rpds-py=0.24.0=py312he7a34ca_0
- ruamel.yaml=0.18.10=py312hb2c0f52_0
- ruamel.yaml.clib=0.2.8=py312hb2c0f52_1
- send2trash=1.8.3=pyh0d859eb_1
- setuptools=79.0.1=pyhff2d567_0
- simdjson=3.12.3=h17cf362_0
- six=1.17.0=pyhd8ed1ab_0
- sniffio=1.3.1=pyhd8ed1ab_1
- soupsieve=2.5=pyhd8ed1ab_1
- spdlog=1.15.2=h7344f28_0
- sqlalchemy=2.0.40=py312h52516f5_0
- stack_data=0.6.3=pyhd8ed1ab_1
- terminado=0.18.1=pyh0d859eb_0
- tinycss2=1.4.0=pyhd8ed1ab_0
- tk=8.6.13=h194ca79_0
- tomli=2.2.1=pyhd8ed1ab_1
- tornado=6.4.2=py312h52516f5_0
- tqdm=4.67.1=pyhd8ed1ab_1
- traitlets=5.14.3=pyhd8ed1ab_1
- truststore=0.10.1=pyh29332c3_0
- types-python-dateutil=2.9.0.20241206=pyhd8ed1ab_0
- typing-extensions=4.13.2=h0e9735f_0
- typing-inspection=0.4.0=pyhd8ed1ab_0
- typing_extensions=4.13.2=pyh29332c3_0
- typing_utils=0.1.0=pyhd8ed1ab_1
- tzdata=2025b=h78e105d_0
- uri-template=1.3.0=pyhd8ed1ab_1
- urllib3=2.4.0=pyhd8ed1ab_0
- wcwidth=0.2.13=pyhd8ed1ab_1
- webcolors=24.11.1=pyhd8ed1ab_0
- webencodings=0.5.1=pyhd8ed1ab_3
- websocket-client=1.8.0=pyhd8ed1ab_1
- wheel=0.45.1=pyhd8ed1ab_1
- yaml=0.2.5=hf897c2e_2
- yaml-cpp=0.8.0=h5ad3122_0
- zeromq=4.3.5=h5efb499_7
- zipp=3.21.0=pyhd8ed1ab_1
- zstandard=0.23.0=py312hb2c0f52_1
- zstd=1.5.7=hbcf94c1_2
prefix: /opt/conda
# Generated by conda-lock.
# platform: linux-aarch64
# input_hash: 0496c2f24ad331da0447aa3b1ccf979408c73263ced30f4601a75ab5565fe23b
channels:
- conda-forge
dependencies:
- _openmp_mutex=4.5=2_gnu
- alembic=1.15.2=pyhd8ed1ab_0
- altair=5.5.0=pyhd8ed1ab_1
- annotated-types=0.7.0=pyhd8ed1ab_1
- anyio=4.9.0=pyh29332c3_0
- archspec=0.2.5=pyhd8ed1ab_0
- argon2-cffi=23.1.0=pyhd8ed1ab_1
- argon2-cffi-bindings=21.2.0=py312hb2c0f52_5
- arrow=1.3.0=pyhd8ed1ab_1
- asttokens=3.0.0=pyhd8ed1ab_1
- async-lru=2.0.5=pyh29332c3_0
- async_generator=1.10=pyhd8ed1ab_2
- attrs=25.3.0=pyh71513ae_0
- babel=2.17.0=pyhd8ed1ab_0
- beautifulsoup4=4.13.4=pyha770c72_0
- bleach=6.2.0=pyh29332c3_4
- bleach-with-css=6.2.0=h82add2a_4
- blinker=1.9.0=pyhff2d567_0
- boltons=24.0.0=pyhd8ed1ab_1
- brotli-python=1.1.0=py312h6f74592_2
- bzip2=1.0.8=h68df207_7
- c-ares=1.34.5=h86ecc28_0
- ca-certificates=2025.4.26=hbd8a1cb_0
- cached-property=1.5.2=hd8ed1ab_1
- cached_property=1.5.2=pyha770c72_1
- certifi=2025.1.31=pyhd8ed1ab_0
- certipy=0.2.2=pyhd8ed1ab_0
- cffi=1.17.1=py312hac81daf_0
- charset-normalizer=3.4.1=pyhd8ed1ab_0
- colorama=0.4.6=pyhd8ed1ab_1
- comm=0.2.2=pyhd8ed1ab_1
- conda=25.3.1=py312h996f985_1
- conda-libmamba-solver=25.3.0=pyhd8ed1ab_0
- conda-package-handling=2.4.0=pyh7900ff3_2
- conda-package-streaming=0.11.0=pyhd8ed1ab_1
- cpp-expected=1.1.0=h17cf362_1
- cryptography=44.0.2=py312he723553_0
- debugpy=1.8.14=py312h6f74592_0
- decorator=5.2.1=pyhd8ed1ab_0
- defusedxml=0.7.1=pyhd8ed1ab_0
- distro=1.9.0=pyhd8ed1ab_1
- exceptiongroup=1.2.2=pyhd8ed1ab_1
- executing=2.2.0=pyhd8ed1ab_0
- fmt=11.1.4=h97e1849_1
- fqdn=1.5.1=pyhd8ed1ab_1
- frozendict=2.4.6=py312hb2c0f52_0
- greenlet=3.2.1=py312h6f74592_0
- h11=0.16.0=pyhd8ed1ab_0
- h2=4.2.0=pyhd8ed1ab_0
- hpack=4.1.0=pyhd8ed1ab_0
- httpcore=1.0.9=pyh29332c3_0
- httpx=0.28.1=pyhd8ed1ab_0
- hyperframe=6.1.0=pyhd8ed1ab_0
- icu=75.1=hf9b3779_0
- idna=3.10=pyhd8ed1ab_1
- importlib-metadata=8.6.1=pyha770c72_0
- importlib_resources=6.5.2=pyhd8ed1ab_0
- ipykernel=6.29.5=pyh3099207_0
- ipython=9.2.0=pyhfb0248b_0
- ipython_genutils=0.2.0=pyhd8ed1ab_2
- ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0
- isoduration=20.11.0=pyhd8ed1ab_1
- jedi=0.19.2=pyhd8ed1ab_1
- jinja2=3.1.6=pyhd8ed1ab_0
- json5=0.12.0=pyhd8ed1ab_0
- jsonpatch=1.33=pyhd8ed1ab_1
- jsonpointer=3.0.0=py312h996f985_1
- jsonschema=4.23.0=pyhd8ed1ab_1
- jsonschema-specifications=2025.4.1=pyh29332c3_0
- jsonschema-with-format-nongpl=4.23.0=hd8ed1ab_1
- jupyter-lsp=2.2.5=pyhd8ed1ab_1
- jupyter_client=8.6.3=pyhd8ed1ab_1
- jupyter_core=5.7.2=pyh31011fe_1
- jupyter_events=0.12.0=pyh29332c3_0
- jupyter_server=2.15.0=pyhd8ed1ab_0
- jupyter_server_terminals=0.5.3=pyhd8ed1ab_1
- jupyterhub-base=5.3.0=pyhda7c55b_0
- jupyterhub-singleuser=5.3.0=h4422900_0
- jupyterlab=4.4.1=pyhd8ed1ab_0
- jupyterlab_pygments=0.3.0=pyhd8ed1ab_2
- jupyterlab_server=2.27.3=pyhd8ed1ab_1
- jupyterlab_widgets=3.0.14=pyhd8ed1ab_0
- keyutils=1.6.1=h4e544f5_0
- krb5=1.21.3=h50a48e9_0
- ld_impl_linux-aarch64=2.43=h80caac9_4
- libarchive=3.7.7=h91b5310_4
- libcurl=8.13.0=h6702fde_0
- libedit=3.1.20250104=pl5321h976ea20_0
- libev=4.33=h31becfc_2
- libexpat=2.7.0=h5ad3122_0
- libffi=3.4.6=he21f813_1
- libgcc=14.2.0=he277a41_2
- libgcc-ng=14.2.0=he9431aa_2
- libgomp=14.2.0=he277a41_2
- libiconv=1.18=hc99b53d_1
- liblzma=5.8.1=h86ecc28_0
- libmamba=2.1.0=hbe5a9cd_0
- libmambapy=2.1.0=py312h033ebb1_0
- libnghttp2=1.64.0=hc8609a4_0
- libnsl=2.0.1=h31becfc_0
- libsodium=1.0.20=h68df207_0
- libsolv=0.7.30=h62756fc_0
- libsqlite=3.49.1=h5eb1b54_2
- libssh2=1.11.1=h18c354c_0
- libstdcxx=14.2.0=h3f4de04_2
- libstdcxx-ng=14.2.0=hf1166c9_2
- libuuid=2.38.1=hb4cce97_0
- libxcrypt=4.4.36=h31becfc_1
- libxml2=2.13.7=he060846_1
- libzlib=1.3.1=h86ecc28_2
- lz4-c=1.10.0=h5ad3122_1
- lzo=2.10=h31becfc_1001
- mako=1.3.10=pyhd8ed1ab_0
- mamba=2.1.0=hf3e92e0_0
- markupsafe=3.0.2=py312h74ce7d3_1
- matplotlib-inline=0.1.7=pyhd8ed1ab_1
- menuinst=2.2.0=py312h996f985_0
- mistune=3.1.3=pyh29332c3_0
- narwhals=1.36.0=pyh29332c3_0
- nbclassic=1.3.0=pyh29332c3_0
- nbclient=0.10.2=pyhd8ed1ab_0
- nbconvert-core=7.16.6=pyh29332c3_0
- nbformat=5.10.4=pyhd8ed1ab_1
- ncurses=6.5=ha32ae93_3
- nest-asyncio=1.6.0=pyhd8ed1ab_1
- nlohmann_json=3.11.3=h0a1ffab_1
- notebook=7.4.1=pyhd8ed1ab_0
- notebook-shim=0.2.4=pyhd8ed1ab_1
- oauthlib=3.2.2=pyhd8ed1ab_1
- openssl=3.5.0=hd08dc88_0
- overrides=7.7.0=pyhd8ed1ab_1
- packaging=25.0=pyh29332c3_1
- pamela=1.2.0=pyhd8ed1ab_1
- pandocfilters=1.5.0=pyhd8ed1ab_0
- parso=0.8.4=pyhd8ed1ab_1
- pexpect=4.9.0=pyhd8ed1ab_1
- pickleshare=0.7.5=pyhd8ed1ab_1004
- pip=25.1=pyh8b19718_0
- pkgutil-resolve-name=1.3.10=pyhd8ed1ab_2
- platformdirs=4.3.7=pyh29332c3_0
- pluggy=1.5.0=pyhd8ed1ab_1
- prometheus_client=0.21.1=pyhd8ed1ab_0
- prompt-toolkit=3.0.51=pyha770c72_0
- psutil=7.0.0=py312hb2c0f52_0
- ptyprocess=0.7.0=pyhd8ed1ab_1
- pure_eval=0.2.3=pyhd8ed1ab_1
- pybind11-abi=4=hd8ed1ab_3
- pycosat=0.6.6=py312hb2c0f52_2
- pycparser=2.22=pyh29332c3_1
- pydantic=2.11.3=pyh3cfb1c2_0
- pydantic-core=2.33.1=py312h8cbf658_0
- pygments=2.19.1=pyhd8ed1ab_0
- pyjwt=2.10.1=pyhd8ed1ab_0
- pysocks=1.7.1=pyha55dd90_7
- python=3.12.10=h1683364_0_cpython
- python-dateutil=2.9.0.post0=pyhff2d567_1
- python-fastjsonschema=2.21.1=pyhd8ed1ab_0
- python-json-logger=2.0.7=pyhd8ed1ab_0
- python_abi=3.12=7_cp312
- pytz=2025.2=pyhd8ed1ab_0
- pyyaml=6.0.2=py312hcc812fe_2
- pyzmq=26.4.0=py312h2427ae1_0
- readline=8.2=h8382b9d_2
- referencing=0.36.2=pyh29332c3_0
- reproc=14.2.5.post0=h86ecc28_0
- reproc-cpp=14.2.5.post0=h5ad3122_0
- requests=2.32.3=pyhd8ed1ab_1
- rfc3339-validator=0.1.4=pyhd8ed1ab_1
- rfc3986-validator=0.1.1=pyh9f0ad1d_0
- rpds-py=0.24.0=py312he7a34ca_0
- ruamel.yaml=0.18.10=py312hb2c0f52_0
- ruamel.yaml.clib=0.2.8=py312hb2c0f52_1
- send2trash=1.8.3=pyh0d859eb_1
- setuptools=79.0.1=pyhff2d567_0
- simdjson=3.12.3=h17cf362_0
- six=1.17.0=pyhd8ed1ab_0
- sniffio=1.3.1=pyhd8ed1ab_1
- soupsieve=2.5=pyhd8ed1ab_1
- spdlog=1.15.2=h7344f28_0
- sqlalchemy=2.0.40=py312h52516f5_0
- stack_data=0.6.3=pyhd8ed1ab_1
- terminado=0.18.1=pyh0d859eb_0
- tinycss2=1.4.0=pyhd8ed1ab_0
- tk=8.6.13=h194ca79_0
- tomli=2.2.1=pyhd8ed1ab_1
- tornado=6.4.2=py312h52516f5_0
- tqdm=4.67.1=pyhd8ed1ab_1
- traitlets=5.14.3=pyhd8ed1ab_1
- truststore=0.10.1=pyh29332c3_0
- types-python-dateutil=2.9.0.20241206=pyhd8ed1ab_0
- typing-extensions=4.13.2=h0e9735f_0
- typing-inspection=0.4.0=pyhd8ed1ab_0
- typing_extensions=4.13.2=pyh29332c3_0
- typing_utils=0.1.0=pyhd8ed1ab_1
- tzdata=2025b=h78e105d_0
- uri-template=1.3.0=pyhd8ed1ab_1
- urllib3=2.4.0=pyhd8ed1ab_0
- wcwidth=0.2.13=pyhd8ed1ab_1
- webcolors=24.11.1=pyhd8ed1ab_0
- webencodings=0.5.1=pyhd8ed1ab_3
- websocket-client=1.8.0=pyhd8ed1ab_1
- wheel=0.45.1=pyhd8ed1ab_1
- yaml=0.2.5=hf897c2e_2
- yaml-cpp=0.8.0=h5ad3122_0
- zeromq=4.3.5=h5efb499_7
- zipp=3.21.0=pyhd8ed1ab_1
- zstandard=0.23.0=py312hb2c0f52_1
- zstd=1.5.7=hbcf94c1_2
ARG BASE_IMAGE=quay.io/jupyter/minimal-notebook:2025-04-28
FROM $BASE_IMAGE
# copy the locked environment.yaml
COPY conda-*.lock.yml /tmp/env.yml
# update the base env with this
RUN mamba env update -n base -f /tmp/env.yml \
&& mamba clean --all
channels:
- conda-forge
- nodefaults
dependencies:
- altair
- jupyterlab_widgets
#!/bin/bash
set -exu
# select base image, conda and docker platforms
# would have to get a tiny bit fancier for multi-arch images,
# but should still work
export BASE_IMAGE=quay.io/jupyter/minimal-notebook:2025-04-28
conda_platform=linux-aarch64
docker_platform=linux/arm64
# export base env from our base image
# this is an input to our lock
docker run -v $PWD:/io --platform $docker_platform --rm -i $BASE_IMAGE sh -c 'conda env export > /io/base-env.yaml'
# Lock combined env of our environment.yml and the base env.
# Use `--kind env` so it can be passed to `mamba env update`
# in our Dockerfile
conda-lock lock --platform $conda_platform -f environment.yaml -f base-env.yaml --kind env
# build the image
docker build --platform $docker_platform --build-arg BASE_IMAGE -t my-image .
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment