across container rebuilds. Services are bound to the Docker container's
network IP address and can only be accessed on the local host.
+In "dev" mode, you can override the default autogenerated settings of Rails
+projects by adding "application.yml.override" to any Rails project (sso, api,
+workbench). This can be used to test out API server settings or point
+Workbench at an alternate API server.
+
### localdemo
Demo configuration. Boots a complete Arvados environment inside the container.
Unlike the development configuration, code directories are included in the demo
WORKSPACE=/usr/src/arvados \
GEM_HOME=/var/lib/gems \
"$@"
- else
+ elif echo "$1" | grep 'dev$' ; then
docker run \
--detach \
--name=$ARVBOX_CONTAINER \
updateconf
wait_for_arvbox
echo "The Arvados source code is checked out at: $ARVADOS_ROOT"
+ else
+ echo "Unknown configuration '$1'"
fi
fi
}
fi
;;
- log|svrestart)
+ log)
if test -n "$1" ; then
- if test "$subcmd" = log ; then
- docker exec -ti $ARVBOX_CONTAINER /usr/bin/env TERM=$TERM less --follow-name +GF "/etc/service/$1/log/main/current"
- fi
- if test "$subcmd" = svrestart ; then
- docker exec -ti $ARVBOX_CONTAINER sv restart "$1"
- docker exec -ti $ARVBOX_CONTAINER sv restart ready
- fi
+ docker exec -ti $ARVBOX_CONTAINER /usr/bin/env TERM=$TERM less --follow-name +GF "/etc/service/$1/log/main/current"
+ else
+ docker exec -ti $ARVBOX_CONTAINER /usr/bin/env TERM=$TERM tail $(docker exec -ti $ARVBOX_CONTAINER find -L /etc -path '/etc/service/*/log/main/current' -printf " %p")
+ fi
+ ;;
+
+ svrestart)
+ if test -n "$1" ; then
+ docker exec -ti $ARVBOX_CONTAINER sv restart "$1"
+ docker exec -ti $ARVBOX_CONTAINER sv restart ready
else
echo "Usage: $0 $subcmd <service>"
echo "Available services:"
ruby rake bundler curl libpq-dev \
libcurl4-openssl-dev libssl-dev zlib1g-dev libpcre3-dev \
openssh-server python-setuptools netcat-traditional \
- libpython-dev fuse libfuse-dev python-pip \
+ libpython-dev fuse libfuse-dev python-pip python-yaml \
pkg-config libattr1-dev python-llfuse python-pycurl \
libwww-perl libio-socket-ssl-perl libcrypt-ssleay-perl \
libjson-perl nginx gitolite3 lsof python-epydoc graphviz
ADD crunch-setup.sh gitolite.rc \
keep-setup.sh common.sh createusers.sh \
logger runsu.sh waitforpostgres.sh \
+ application_yml_override.py \
/usr/local/lib/arvbox/
+
ADD service/ /usr/local/lib/arvbox/service
RUN rmdir /etc/service && ln -sf /usr/local/lib/arvbox/service /etc
--- /dev/null
+#!/usr/bin/env python
+
+import yaml
+
+try:
+ with open("application.yml.override") as f:
+ b = yaml.load(f)
+except IOError:
+ exit()
+
+with open("application.yml") as f:
+ a = yaml.load(f)
+
+def recursiveMerge(a, b):
+ if isinstance(a, dict) and isinstance(b, dict):
+ for k in b:
+ print k
+ a[k] = recursiveMerge(a.get(k), b[k])
+ return a
+ else:
+ return b
+
+with open("application.yml", "w") as f:
+ yaml.dump(recursiveMerge(a, b), f)
default_collection_replication: 1
EOF
+(cd config && /usr/local/lib/arvbox/application_yml_override.py)
+
if ! test -f /var/lib/arvados/api_database_pw ; then
ruby -e 'puts rand(2**128).to_s(36)' > /var/lib/arvados/api_database_pw
fi
allow_account_registration: true
EOF
+(cd config && /usr/local/lib/arvbox/application_yml_override.py)
+
if ! test -f /var/lib/arvados/sso_database_pw ; then
ruby -e 'puts rand(2**128).to_s(36)' > /var/lib/arvados/sso_database_pw
fi
keep_web_url: http://$localip:${services[keep-web]}/c=%{uuid_or_pdh}
arvados_docsite: http://$localip:${services[doc]}/
EOF
+
+(cd config && /usr/local/lib/arvbox/application_yml_override.py)