From 2c843101843b975ece546b8921d53b3dd4e6974d Mon Sep 17 00:00:00 2001 From: MarkKoz Date: Thu, 6 Jun 2019 16:54:33 -0700 Subject: Create shell script for building a dev image and running a shell * Put scripts in a new scripts folder --- Pipfile | 24 +----------------------- docker/.profile | 25 ------------------------- scripts/.profile | 25 +++++++++++++++++++++++++ scripts/dev.sh | 45 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 48 deletions(-) delete mode 100644 docker/.profile create mode 100644 scripts/.profile create mode 100755 scripts/dev.sh diff --git a/Pipfile b/Pipfile index 492008a..1e9ec67 100644 --- a/Pipfile +++ b/Pipfile @@ -40,29 +40,7 @@ snekbox = """ --access-logfile - \ snekbox.api.app """ -build-venv-dev = """ - docker build \ - -t pythondiscord/snekbox-venv:dev \ - -f docker/venv.Dockerfile - --build-arg DEV=1 \ - . -""" -devsh = """ - /usr/bin/env sh -c ' - docker run \ - -it \ - --rm \ - --privileged \ - --network host \ - -h pdsnk-dev \ - -e PIPENV_PIPFILE="/snekbox/Pipfile" \ - -e ENV="/snekbox-local/docker/.profile" \ - -v "$(pwd)":/snekbox-local \ - -w "/snekbox-local" \ - --entrypoint /bin/ash \ - pythondiscord/snekbox-venv:dev - ' -""" +devsh = "scripts/dev.sh" buildbox = "docker build -t pythondiscord/snekbox:latest -f docker/Dockerfile ." pushbox = "docker push pythondiscord/snekbox:latest" buildboxbase = "docker build -t pythondiscord/snekbox-base:latest -f docker/base.Dockerfile ." diff --git a/docker/.profile b/docker/.profile deleted file mode 100644 index 415e4f6..0000000 --- a/docker/.profile +++ /dev/null @@ -1,25 +0,0 @@ -nsjpy() { - local nsj_args="" - while [ "$#" -gt 1 ]; do - nsj_args="${nsj_args:+${nsj_args} }$1" - shift - done - - mkdir -p /sys/fs/cgroup/pids/NSJAIL - mkdir -p /sys/fs/cgroup/memory/NSJAIL - nsjail \ - -Mo \ - --rlimit_as 700 \ - --chroot / \ - -E LANG=en_US.UTF-8 \ - -R/usr -R/lib -R/lib64 \ - --user nobody \ - --group nogroup \ - --time_limit 2 \ - --disable_proc \ - --iface_no_lo \ - --cgroup_pids_max=1 \ - --cgroup_mem_max=52428800 \ - $nsj_args -- \ - /snekbox/.venv/bin/python3 -Iq -c "$@" -} diff --git a/scripts/.profile b/scripts/.profile new file mode 100644 index 0000000..415e4f6 --- /dev/null +++ b/scripts/.profile @@ -0,0 +1,25 @@ +nsjpy() { + local nsj_args="" + while [ "$#" -gt 1 ]; do + nsj_args="${nsj_args:+${nsj_args} }$1" + shift + done + + mkdir -p /sys/fs/cgroup/pids/NSJAIL + mkdir -p /sys/fs/cgroup/memory/NSJAIL + nsjail \ + -Mo \ + --rlimit_as 700 \ + --chroot / \ + -E LANG=en_US.UTF-8 \ + -R/usr -R/lib -R/lib64 \ + --user nobody \ + --group nogroup \ + --time_limit 2 \ + --disable_proc \ + --iface_no_lo \ + --cgroup_pids_max=1 \ + --cgroup_mem_max=52428800 \ + $nsj_args -- \ + /snekbox/.venv/bin/python3 -Iq -c "$@" +} diff --git a/scripts/dev.sh b/scripts/dev.sh new file mode 100755 index 0000000..490021f --- /dev/null +++ b/scripts/dev.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env sh + +# Sets up a development environment and runs a shell in a docker container. +# Usage: dev.sh [--build [--clean]] [ash_args ...] + +if [ "$1" = "--build" ]; then + shift + printf "Building pythondiscord/snekbox-venv:dev..." + + docker build \ + -t pythondiscord/snekbox-venv:dev \ + -f docker/venv.Dockerfile \ + --build-arg DEV=1 \ + -q \ + . \ + >/dev/null \ + && printf " done!\n" || exit "$?" + + if [ "$1" = "--clean" ]; then + shift + dangling_imgs=$(docker images -f "dangling=true" -q) + + if [ -n "${dangling_imgs}" ]; then + printf "Removing dangling images..." + + docker rmi $dangling_imgs >/dev/null \ + && printf " done!\n" || exit "$?" + fi + fi +fi + +docker run \ + -it \ + --rm \ + --privileged \ + --network host \ + -h pdsnk-dev \ + -e PYTHONDONTWRITEBYTECODE=1 \ + -e PIPENV_PIPFILE="/snekbox/Pipfile" \ + -e ENV="/snekbox-local/scripts/.profile" \ + -v "${PWD}":/snekbox-local \ + -w "/snekbox-local" \ + --entrypoint /bin/ash \ + pythondiscord/snekbox-venv:dev \ + "$@" -- cgit v1.2.3