"--volume=$PIPCACHE:/var/lib/pip:rw" \
"--volume=$NPMCACHE:/var/lib/npm:rw" \
"--volume=$GOSTUFF:/var/lib/gopath:rw" \
- arvados/arvbox-dev$TAG \
- /usr/local/bin/runsvinit -svdir=/etc/test-service
+ "--env=SVDIR=/etc/test-service" \
+ arvados/arvbox-dev$TAG
docker exec -ti \
$ARVBOX_CONTAINER \
RUN rm -rf /var/lib/postgresql && mkdir -p /var/lib/postgresql
-RUN cd /root && \
- GOPATH=$PWD go get github.com/curoverse/runsvinit && \
- install bin/runsvinit /usr/local/bin
-
ENV PJSVERSION=1.9.8
# bitbucket is the origin, but downloads fail sometimes, so use our own mirror instead.
#ENV PJSURL=https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-${PJSVERSION}-linux-x86_64.tar.bz2
application_yml_override.py api-setup.sh \
/usr/local/lib/arvbox/
-RUN mkdir /etc/docker
-ADD daemon.json /etc/docker/
+ADD runit /etc/runit
# Start the supervisor.
-CMD ["/usr/local/bin/runsvinit"]
+ENV SVDIR /etc/service
+STOPSIGNAL SIGINT
+CMD ["/sbin/runit"]
else
frozen=""
fi
- if ! test -x bundle ; then
+ if ! test -x /var/lib/gems/bin/bundler ; then
bundlergem=$(ls -r $GEM_HOME/cache/bundler-*.gem 2>/dev/null | head -n1 || true)
if test -n "$bundlergem" ; then
flock /var/lib/gems/gems.lock gem install --local --no-document $bundlergem
else
flock /var/lib/gems/gems.lock gem install --no-document bundler
fi
- ln -sf /var/lib/gems/bin/bundle /usr/local/bin
fi
- if ! flock /var/lib/gems/gems.lock bundle install --path $GEM_HOME --local --no-deployment $frozen "$@" ; then
- flock /var/lib/gems/gems.lock bundle install --path $GEM_HOME --no-deployment $frozen "$@"
+ if ! flock /var/lib/gems/gems.lock bundler install --path $GEM_HOME --local --no-deployment $frozen "$@" ; then
+ flock /var/lib/gems/gems.lock bundler install --path $GEM_HOME --no-deployment $frozen "$@"
fi
}
--- /dev/null
+#!/bin/sh
+# system one time tasks
+
+PATH=/command:/sbin:/bin:/usr/sbin:/usr/bin
+
+touch /run/runit.stopit
+chmod 0 /run/runit.stopit
--- /dev/null
+#!/bin/sh
+
+PATH=/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin
+
+echo
+echo "Arvados-in-a-box starting"
+echo
+
+exec env - PATH=$PATH \
+runsvdir -P $SVDIR
--- /dev/null
+#!/bin/sh
+exec 2>&1
+
+PATH=/command:/sbin:/bin:/usr/sbin:/usr/bin
+
+LAST=0
+test -x /run/runit.reboot && LAST=6
+
+echo 'Waiting for services to stop...'
+sv -w196 force-stop /service/*
+sv exit /service/*
+
+echo 'Shutdown...'
+/etc/init.d/rc $LAST
--- /dev/null
+#!/bin/sh
+exec 2>&1
+
+PATH=/command:/sbin:/bin:/usr/sbin:/usr/bin
+
+LAST=0
+test -x /run/runit.reboot && LAST=6
+
+echo 'Waiting for services to stop...'
+sv -w196 force-stop $SVDIR/*
+sv exit $SVDIR/*
+
+echo 'Shutdown...'
read pid cmd state ppid pgrp session tty_nr tpgid rest < /proc/self/stat
trap "kill -TERM -$pgrp; exit" EXIT TERM KILL SIGKILL SIGTERM SIGQUIT
-if ! docker daemon --storage-driver=overlay $DOCKER_DAEMON_ARGS ; then
- docker daemon $DOCKER_DAEMON_ARGS
+mkdir /etc/docker
+# Prefer overlay2
+echo '{"storage-driver": "overlay2"}' > /etc/docker/daemon.json
+
+if ! dockerd ; then
+ # Oops overlay2 didn't work, let docker choose a default.
+ echo '{}' > /etc/docker/daemon.json
+ dockerd
fi
set -eu -o pipefail
if ! [[ -d /tmp/arvbox-ready ]] ; then
- echo
- echo "Arvados-in-a-box starting"
- echo
echo "Note: if this is a fresh arvbox installation, it may take 10-15 minutes (or longer) to download and"
echo "install dependencies. Use \"arvbox log\" to monitor the progress of specific services."
echo
-#!/bin/sh
+#!/bin/bash
# Copyright (C) The Arvados Authors. All rights reserved.
#
# SPDX-License-Identifier: AGPL-3.0
set -e
+. /usr/local/lib/arvbox/common.sh
+
/usr/local/lib/arvbox/runsu.sh $0-service $1
cd /usr/src/arvados/apps/workbench