From f33bcbf3c0839c6bebb63141ff3d520b41084183 Mon Sep 17 00:00:00 2001 From: Matin Dehghani Date: Sun, 26 Jun 2022 01:07:34 +0200 Subject: More fine-grained image management (e.g. allow to get prebuilt images from other user and adapt ids inside with change-user.sh script) --- build/change-user.sh | 15 +++++++++++++++ build/extract.sh | 2 +- run/config.sh | 2 +- run/devel.sh | 2 +- run/run-bash.sh | 2 +- run/run-jupyter.sh | 2 +- run/run-ssh.sh | 2 +- run/run.sh | 2 +- run/update-from-devel.sh | 2 +- 9 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 build/change-user.sh diff --git a/build/change-user.sh b/build/change-user.sh new file mode 100644 index 0000000..cb13141 --- /dev/null +++ b/build/change-user.sh @@ -0,0 +1,15 @@ +#! /usr/bin/env bash + +set -o errexit + +image="$1" +[ -n "$image" ] || image="docker.io/chsa/tomo-remote:evelina" + +container=$(buildah from "$image") +buildah run $container sh -c "echo '$(id -ng):x:$(id -g):' >> /etc/group" +#buildah run $container sh -c "echo '$(id -nu):x:$(id -u):$(id -g):$(id -nu):/ccpi/data:/bin/bash' >> /etc/passwd" +buildah run $container sh -c "echo '$(id -nu):x:0:0:$(id -nu):/ccpi/data:/bin/bash' >> /etc/passwd" +buildah run $container sh -c "echo '$(id -nu):test' | chpasswd" +buildah commit --format docker $container tomo-remote:latest + +echo "$container build from ${image} and saved as tomo-remote:latest" diff --git a/build/extract.sh b/build/extract.sh index 17c6e3f..90793d5 100644 --- a/build/extract.sh +++ b/build/extract.sh @@ -6,7 +6,7 @@ image="$1" [ -n "$image" ] || { echo "Usage: $0 "; exit 1; } -container=$(buildah from localhost/${image}) +container=$(buildah from ${image}) path=$(buildah mount $container) mkdir -p ../repos/ cp -ra "$path/ccpi/repos"/* ../repos/ diff --git a/run/config.sh b/run/config.sh index f3bdecb..b407fef 100644 --- a/run/config.sh +++ b/run/config.sh @@ -6,7 +6,7 @@ web_port="${port}80" image="$1" -[ -n "$image" ] || image="tomo-remote" # tomo-remote:latest tomo-remote:devel (also ccpi, ufo, tomo) +[ -n "$image" ] || image="localhost/tomo-remote:latest" # tomo-remote:latest tomo-remote:devel tomo-remote:evelina (also ccpi, ufo, tomo) volumes="-v $home/ccpi/data:/ccpi/data -v $home/ccpi/repos:/ccpi/repos" [ -d /mnt/fast/$user ] && volumes="$volumes -v /mnt/fast/$user:/ccpi/data/fast" diff --git a/run/devel.sh b/run/devel.sh index 637552a..fef44e0 100644 --- a/run/devel.sh +++ b/run/devel.sh @@ -8,4 +8,4 @@ if [ ! -d ../repos ]; then buildah unshare bash ../build/extract.sh ${image} fi -podman run --name "ccpi-devel" -it --rm --hooks-dir /usr/share/containers/oci/hooks.d/ -p $ssh_port:2222/tcp $volumes localhost/${image} bash -c "bash /root/setup/provision.sh; bash" +podman run --name "ccpi-devel" -it --rm --hooks-dir /usr/share/containers/oci/hooks.d/ -p $ssh_port:2222/tcp $volumes ${image} bash -c "[ -f /usr/bin/supervisord ] && python /usr/bin/supervisord; bash /root/setup/provision.sh; bash" diff --git a/run/run-bash.sh b/run/run-bash.sh index 41c2579..1e25e8a 100644 --- a/run/run-bash.sh +++ b/run/run-bash.sh @@ -4,4 +4,4 @@ set -o errexit . config.sh -podman run --name "ccpi-run" -it --rm --hooks-dir /usr/share/containers/oci/hooks.d/ -p ${web_port}:8888/tcp -p $ssh_port:2222/tcp $volumes localhost/${image} bash +podman run --name "ccpi-run" -it --rm --hooks-dir /usr/share/containers/oci/hooks.d/ -p ${web_port}:8888/tcp -p $ssh_port:2222/tcp $volumes ${image} bash diff --git a/run/run-jupyter.sh b/run/run-jupyter.sh index 31d819d..3858b4e 100644 --- a/run/run-jupyter.sh +++ b/run/run-jupyter.sh @@ -10,4 +10,4 @@ echo " ssh -L $web_port:localhost:$web_port $(hostname)" echo "Generate password file '/ccpi/data/.jupyter/jupyter_notebook_config.json' with running in the container the following command" echo " jupyter notebook password" -podman run --name "ccpi-run" -it --rm --hooks-dir /usr/share/containers/oci/hooks.d/ -p ${web_port}:8888/tcp $volumes localhost/${image} jupyter notebook --allow-root --no-browser --ip 0.0.0.0 --port=8888 --notebook-dir=/ccpi/data/ --debug \ No newline at end of file +podman run --name "ccpi-run" -it --rm --hooks-dir /usr/share/containers/oci/hooks.d/ -p ${web_port}:8888/tcp $volumes ${image} jupyter notebook --allow-root --no-browser --ip 0.0.0.0 --port=8888 --notebook-dir=/ccpi/data/ --debug \ No newline at end of file diff --git a/run/run-ssh.sh b/run/run-ssh.sh index 8e3dfdb..86f994f 100644 --- a/run/run-ssh.sh +++ b/run/run-ssh.sh @@ -10,4 +10,4 @@ echo " ssh -L $ssh_port:localhost:$ssh_port $(hostname)" echo " and connect locally " echo " ssh -p $ssh_port localhost" -podman run --name "ccpi-run" -it --rm --hooks-dir /usr/share/containers/oci/hooks.d/ -p ${ssh_port}:2222/tcp $volumes localhost/${image} /usr/sbin/sshd -D -p 2222 +podman run --name "ccpi-run" -it --rm --hooks-dir /usr/share/containers/oci/hooks.d/ -p ${ssh_port}:2222/tcp $volumes ${image} /usr/sbin/sshd -D -p 2222 diff --git a/run/run.sh b/run/run.sh index eae1cec..eabb633 100644 --- a/run/run.sh +++ b/run/run.sh @@ -4,4 +4,4 @@ set -o errexit . config.sh -podman run --name "ccpi-run" -it --rm --hooks-dir /usr/share/containers/oci/hooks.d/ -p ${web_port}:8888/tcp -p $ssh_port:2222/tcp $volumes localhost/${image} sh -c '[ -f /usr/bin/supervisord ] && python /usr/bin/supervisord; /bin/bash' +podman run --name "ccpi-run" -it --rm --hooks-dir /usr/share/containers/oci/hooks.d/ -p ${web_port}:8888/tcp -p $ssh_port:2222/tcp $volumes ${image} sh -c '[ -f /usr/bin/supervisord ] && python /usr/bin/supervisord; /bin/bash' diff --git a/run/update-from-devel.sh b/run/update-from-devel.sh index 4eb8e7b..2be835f 100644 --- a/run/update-from-devel.sh +++ b/run/update-from-devel.sh @@ -8,7 +8,7 @@ if [ ! -d ../repos ]; then buildah unshare bash ../build/extract.sh ${image} fi -podman run --name "ccpi-devel" -it --hooks-dir /usr/share/containers/oci/hooks.d/ $volumes localhost/${image} bash /root/setup/provision.sh +podman run --name "ccpi-devel" -it --hooks-dir /usr/share/containers/oci/hooks.d/ $volumes ${image} bash /root/setup/provision.sh podman container cp ../repos/ ccpi-devel:/ccpi/ podman container commit ccpi-devel ${image}:devel podman rm ccpi-devel -- cgit v1.2.1