[ARVADOS-DEV] updated: 80391687c4cdf1ab167e67f9a48d4c7354c3a4d8
git at public.curoverse.com
git at public.curoverse.com
Mon Jan 18 14:37:14 EST 2016
Summary of changes:
arvbox/bin/arvbox | 84 ++++++++++++++++++++++++++++----------
arvbox/lib/arvbox/docker/common.sh | 8 +++-
2 files changed, 69 insertions(+), 23 deletions(-)
via 80391687c4cdf1ab167e67f9a48d4c7354c3a4d8 (commit)
from 50aded0e2ff25457b78c2a3b5967b42c6ec2c75f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 80391687c4cdf1ab167e67f9a48d4c7354c3a4d8
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Mon Jan 18 14:37:10 2016 -0500
8080: Add "public" configuration which is configured to advertise services with
the host's IP addresses and uses --publish to expose the service ports on the
host.
diff --git a/arvbox/bin/arvbox b/arvbox/bin/arvbox
index ecbbfbf..73c3803 100755
--- a/arvbox/bin/arvbox
+++ b/arvbox/bin/arvbox
@@ -70,28 +70,71 @@ EOF
fi
}
+wait_for_arvbox() {
+ FF=/tmp/arvbox-fifo-$$
+ mkfifo $FF
+ docker logs -f $ARVBOX_CONTAINER > $FF &
+ LOGPID=$!
+ while read line ; do
+ echo $line
+ if echo $line | grep "Workbench is running at" >/dev/null ; then
+ kill $LOGPID
+ fi
+ done < $FF
+ rm $FF
+ echo
+ if test -n "$localip" ; then
+ echo "export ARVADOS_API_HOST=localip:8000"
+ else
+ echo "export ARVADOS_API_HOST=$(getip):8000"
+ fi
+}
+
run() {
if docker ps -a | grep -E "$ARVBOX_CONTAINER$" -q ; then
echo "Container $ARVBOX_CONTAINER is already running, use stop, restart or reboot"
exit 0
fi
- if test "$1" = demo ; then
+ if echo "$1" | grep '^public' ; then
+ defaultdev=$(/sbin/ip route|awk '/default/ { print $5 }')
+ localip=$(ip addr show $defaultdev | grep 'inet ' | sed 's/ *inet \(.*\)\/.*/\1/')
+ iptemp=$(tempfile)
+ echo $localip > $iptemp
+ PUBLIC="--volume=$iptemp:/var/run/localip_override
+ --publish=80:80
+ --publish=8000:8000
+ --publish=8900:8900
+ --publish=9001:9001
+ --publish=9002:9002
+ --publish=25100:25100
+ --publish=25107:25107
+ --publish=25108:25108
+ --publish=8001:8001"
+ else
+ PUBLIC=""
+ fi
+
+ if echo "$1" | grep 'demo$' ; then
if test -d "$ARVBOX_DATA" ; then
echo "It looks like you already have a development container named $ARVBOX_CONTAINER."
- echo "Set ARVBOX_CONTAINER to set the demo container name"
+ echo "Set ARVBOX_CONTAINER to set a different name for your demo container"
exit 1
fi
if ! (docker ps -a | grep -E "$ARVBOX_CONTAINER-data$" -q) ; then
docker create -v /var/lib/postgres -v /var/lib/arvados --name $ARVBOX_CONTAINER-data arvados/arvbox-demo /bin/true
fi
+
docker run \
+ --detach \
--name=$ARVBOX_CONTAINER \
--privileged \
--volumes-from $ARVBOX_CONTAINER-data \
+ $PUBLIC \
arvados/arvbox-demo
updateconf
+ wait_for_arvbox
else
mkdir -p "$PG_DATA" "$VAR_DATA" "$PASSENGER" "$GEMS"
@@ -159,21 +202,10 @@ run() {
"--volume=$VAR_DATA:/var/lib/arvados:rw" \
"--volume=$PASSENGER:/var/lib/passenger:rw" \
"--volume=$GEMS:/var/lib/gems:rw" \
+ $PUBLIC \
arvados/arvbox-dev
updateconf
- FF=/tmp/arvbox-fifo-$$
- mkfifo $FF
- docker logs -f $ARVBOX_CONTAINER > $FF &
- LOGPID=$!
- while read line ; do
- echo $line
- if echo $line | grep "Workbench is running at" >/dev/null ; then
- kill $LOGPID
- fi
- done < $FF
- rm $FF
- echo
- echo "export ARVADOS_API_HOST=$(getip):8000"
+ wait_for_arvbox
echo "The Arvados source code is checked out at: $ARVADOS_ROOT"
fi
fi
@@ -183,6 +215,9 @@ stop() {
if docker ps -a --filter "status=running" | grep -E "$ARVBOX_CONTAINER$" -q ; then
docker stop $ARVBOX_CONTAINER
fi
+ if docker ps -a --filter "status=created" | grep -E "$ARVBOX_CONTAINER$" -q ; then
+ docker rm --volumes=true $ARVBOX_CONTAINER
+ fi
if docker ps -a --filter "status=exited" | grep -E "$ARVBOX_CONTAINER$" -q ; then
docker rm --volumes=true $ARVBOX_CONTAINER
fi
@@ -194,18 +229,23 @@ build() {
exit 1
fi
docker build -t arvados/arvbox-base -f "$ARVBOX_DOCKER/Dockerfile.base" "$ARVBOX_DOCKER"
- if test "$1" = dev -o "$1" = test ; then
- docker build -t arvados/arvbox-dev -f "$ARVBOX_DOCKER/Dockerfile.dev" "$ARVBOX_DOCKER"
- else
+ if test "$1" = localdemo -o "$1" = publicdemo ; then
docker build -t arvados/arvbox-demo -f "$ARVBOX_DOCKER/Dockerfile.demo" "$ARVBOX_DOCKER"
+ else
+ docker build -t arvados/arvbox-dev -f "$ARVBOX_DOCKER/Dockerfile.dev" "$ARVBOX_DOCKER"
fi
}
check() {
- if test -z "$1" ; then
- echo "Argument to $subcmd must be one of dev, test, demo"
- exit 1
- fi
+ case "$1" in
+ localdemo|publicdemo|dev|publicdev|test)
+ true
+ ;;
+ *)
+ echo "Argument to $subcmd must be one of localdemo, publicdemo, dev, publicdev, test"
+ exit 1
+ ;;
+ esac
}
subcmd="$1"
diff --git a/arvbox/lib/arvbox/docker/common.sh b/arvbox/lib/arvbox/docker/common.sh
index 69869a7..4c2de47 100644
--- a/arvbox/lib/arvbox/docker/common.sh
+++ b/arvbox/lib/arvbox/docker/common.sh
@@ -1,5 +1,11 @@
-localip=$(ip addr show eth0 |grep "inet " | sed 's/ *inet \([^/]*\).*/\1/')
+if test -s /var/run/localip_override ; then
+ localip=$(cat /var/run/localip_override)
+else
+ defaultdev=$(/sbin/ip route|awk '/default/ { print $5 }')
+ localip=$(ip addr show $defaultdev | grep 'inet ' | sed 's/ *inet \(.*\)\/.*/\1/')
+fi
+
export GEM_HOME=/var/lib/gems
export GEM_PATH=/var/lib/gems
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list