2023-05-30 20:10:59 +02:00
|
|
|
{ pkgs, packages, bind-ip ? "0.0.0.0", bind-port ? 8080, ... }:
|
2023-05-30 16:00:35 +02:00
|
|
|
let
|
|
|
|
miniconda-alpine-dockerhub = pkgs.dockerTools.pullImage {
|
|
|
|
imageName = "continuumio/miniconda3";
|
|
|
|
imageDigest = "sha256:a4b665d2075d9bf4b2c5aa896c059439a0baa5538ca67589a673121c31b4c35d";
|
|
|
|
sha256 = "sha256-boIAZ8PaPckWLzYYTqrqMEL7HGbyl9grCJrXOpsBMhg=";
|
|
|
|
finalImageTag = "23.3.1-0";
|
|
|
|
finalImageName = "miniconda";
|
|
|
|
|
|
|
|
};
|
|
|
|
in
|
|
|
|
pkgs.dockerTools.buildImage {
|
|
|
|
name = "stateful-jupyterlab";
|
|
|
|
tag = "latest";
|
|
|
|
fromImage = miniconda-alpine-dockerhub;
|
2023-05-30 20:10:59 +02:00
|
|
|
runAsRoot =
|
2023-05-30 17:14:55 +02:00
|
|
|
let
|
|
|
|
entrypoint = pkgs.writeScriptBin "entrypoint.sh" ''
|
2023-05-30 17:18:49 +02:00
|
|
|
#!/bin/bash
|
2023-06-01 12:42:19 +02:00
|
|
|
conda install -c conda-forge ${packages} \
|
2023-05-30 17:14:55 +02:00
|
|
|
jupyterlab
|
|
|
|
|
2023-05-30 20:10:59 +02:00
|
|
|
jupyter-lab --ip=${bind-ip} --port=${toString bind-port} --no-browser --allow-root
|
2023-05-30 17:14:55 +02:00
|
|
|
'';
|
|
|
|
in
|
|
|
|
''
|
2023-05-30 20:10:59 +02:00
|
|
|
#!${pkgs.runtimeShell}
|
|
|
|
mkdir -p /workdir
|
|
|
|
cp ${entrypoint}/bin/entrypoint.sh /entrypoint.sh
|
|
|
|
'';
|
2023-05-30 16:00:35 +02:00
|
|
|
config = {
|
|
|
|
WorkingDir = "/workdir";
|
2023-05-30 17:14:55 +02:00
|
|
|
Entrypoint = "/entrypoint.sh";
|
2023-05-30 16:00:35 +02:00
|
|
|
};
|
|
|
|
}
|