Serialize the service startup in arvbox by adding a dependency on the
[arvados.git] / tools / arvbox / lib / arvbox / docker / service / workbench / run-service
1 #!/bin/bash
2 # Copyright (C) The Arvados Authors. All rights reserved.
3 #
4 # SPDX-License-Identifier: AGPL-3.0
5
6 exec 2>&1
7 set -ex -o pipefail
8
9 .  /usr/local/lib/arvbox/common.sh
10
11 if test "$1" != "--only-deps" ; then
12   while [ ! -f $ARVADOS_CONTAINER_PATH/api.ready ]; do
13     sleep 1
14   done
15 fi
16
17 cd /usr/src/arvados/apps/workbench
18
19 if test -s $ARVADOS_CONTAINER_PATH/workbench_rails_env ; then
20   export RAILS_ENV=$(cat $ARVADOS_CONTAINER_PATH/workbench_rails_env)
21 else
22   export RAILS_ENV=development
23 fi
24
25 run_bundler --without=development
26 flock $GEM_HOME/gems.lock bundle exec passenger-config build-native-support
27 flock $GEM_HOME/gems.lock bundle exec passenger-config install-standalone-runtime
28 mkdir -p /usr/src/arvados/apps/workbench/tmp
29
30 if test "$1" = "--only-deps" ; then
31    # Workaround for validation that asserts there's a download URL
32    # configured, which breaks rake if it is missing.
33 cat >config/application.yml <<EOF
34 $RAILS_ENV:
35   keep_web_url: https://example.com/c=%{uuid_or_pdh}
36 EOF
37    RAILS_GROUPS=assets flock $GEM_HOME/gems.lock bundle exec rake npm:install
38    rm config/application.yml
39    exit
40 fi
41
42 set -u
43
44 secret_token=$(cat $ARVADOS_CONTAINER_PATH/workbench_secret_token)
45
46 if test -a /usr/src/arvados/apps/workbench/config/arvados_config.rb ; then
47     rm -f config/application.yml
48 else
49 cat >config/application.yml <<EOF
50 $RAILS_ENV:
51   secret_token: $secret_token
52   arvados_login_base: https://$localip:${services[controller-ssl]}/login
53   arvados_v1_base: https://$localip:${services[controller-ssl]}/arvados/v1
54   arvados_insecure_https: false
55   keep_web_download_url: https://$localip:${services[keep-web-ssl]}/c=%{uuid_or_pdh}
56   keep_web_url: https://$localip:${services[keep-web-ssl]}/c=%{uuid_or_pdh}
57   arvados_docsite: http://$localip:${services[doc]}/
58   force_ssl: false
59   composer_url: http://$localip:${services[composer]}
60   workbench2_url: https://$localip:${services[workbench2-ssl]}
61 EOF
62
63 (cd config && /usr/local/lib/arvbox/yml_override.py application.yml)
64 fi
65
66 RAILS_GROUPS=assets flock $GEM_HOME/gems.lock bundle exec rake npm:install
67 flock $GEM_HOME/gems.lock bundle exec rake assets:precompile