- then
- play with
devcontainer.json
templates/features to see if their is a better way (think about handling project requirements/not having to host images) - user options in devcontainer spec to match up with jovyan etc for settings
- customise codespace experience using
devcontainer.json
,.vscode
and github dotfiles - experiment with using a much smaller base image and only adding in useful things
- rust?
- jupyterlab codespace?
- remote hosting on personal metal
- env vars or tags or similar to custom dev env
- play with
- initial
-
Dockerfile
to produce a useful baseline container (NB - VERY LARGE) -
devcontainer.json
to use that container in codespaces - shell scripts build container locally, push container to registry (hub) and run container locally with bind mounts
-
Can either load config files from a project repo each time and/or store config files in docker volumes for re-use
- can use named docker volumes for settings (universal), bind mount for work(project), dockerfile for requirements (project)
- create a docker volume named
jovyan
orrstudio
to contain stateful setting changes - re-use that container to preserve user based application settings
- ensure that you are overloading the
~/work
with a bind mount to current project code and data
- create a docker volume named
alias loco='cmd.exe /C start microsoft-edge:http://localhost:8889; docker run --rm -ti --name "local_loco" -e RESTARTABLE=yes -p 8889:8888/tcp -v jovyan:/home/jovyan -v "$(pwd):/home/jovyan/work" matthewbegun/loco:latest start-notebook.py --IdentityProvider.token=''
# ruhroh
alias rstudio='cmd.exe /C start microsoft-edge:http://localhost:8787; docker run --name "ruh_roh" --rm -ti -e DISABLE_AUTH=true -p 8787:8787 -v "$(pwd):/home/rstudio/work" rocker/verse:latest'
alias ruhroh='rstudio'
alias rr='rstudio'
# loco
alias loco='cmd.exe /C start microsoft-edge:http://localhost:8889; docker run --name "local_loco" --rm -ti -e RESTARTABLE=yes -p 8889:8888/tcp -v "$(pwd):/home/jovyan/work" matthewbegun/loco:latest start-notebook.py --IdentityProvider.token='' --ServerApp.root_dir=/home/jovyan/work'
alias notbook='loco'
alias nb='loco'
## data containers
# Populate a volume using a container
# the
docker run -d --name notbook \
-p 8888:8888 \
-v jovyan:/home/jovyan \
jupyter/scipy-notebook
docker run -d --name notbooker \
-p 8888:8888 \
--volumes-from notbook \
-v ${PWD}:/home/jovyan/work \
jupyter/scipy-notebook
# Mount a populated volume into another container(s)
docker run -ti --init --rm \
-v jovyan:/jovyan \
busybox
#!/usr/bin/bash
# pull.bash
# use docker images format option to generate list of images to pull
docker images --format "{{.Repository}}:{{.Tag}}" | xargs -L1 docker pull
#!/usr/bin/bash
# ship.bash
# build all harbor images
find . -name build.bash -execdir bash {} \;
# push all harbor images
find . -name push.bash -execdir bash {} \;