Merge branch '16913-logout' closes #16913
[arvados.git] / tools / arvbox / lib / arvbox / docker / common.sh
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: AGPL-3.0
4
5 export DEBIAN_FRONTEND=noninteractive
6 export GEM_HOME=/var/lib/arvados/lib/ruby/gems/2.5.0
7 export PATH=${PATH}:/usr/local/go/bin:$GEM_HOME/bin:/var/lib/arvados/bin
8 export npm_config_cache=/var/lib/npm
9 export npm_config_cache_min=Infinity
10 export R_LIBS=/var/lib/Rlibs
11 export HOME=$(getent passwd arvbox | cut -d: -f6)
12 export ARVADOS_CONTAINER_PATH=/var/lib/arvados-arvbox
13
14 defaultdev=$(/sbin/ip route|awk '/default/ { print $5 }')
15 dockerip=$(/sbin/ip route | grep default | awk '{ print $3 }')
16 containerip=$(ip addr show $defaultdev | grep 'inet ' | sed 's/ *inet \(.*\)\/.*/\1/')
17 if test -s /var/run/localip_override ; then
18     localip=$(cat /var/run/localip_override)
19 else
20     localip=$containerip
21 fi
22
23 root_cert=$ARVADOS_CONTAINER_PATH/root-cert.pem
24 root_cert_key=$ARVADOS_CONTAINER_PATH/root-cert.key
25 server_cert=$ARVADOS_CONTAINER_PATH/server-cert-${localip}.pem
26 server_cert_key=$ARVADOS_CONTAINER_PATH/server-cert-${localip}.key
27
28 declare -A services
29 services=(
30   [workbench]=443
31   [workbench2]=3000
32   [workbench2-ssl]=3001
33   [api]=8004
34   [controller]=8003
35   [controller-ssl]=8000
36   [composer]=4200
37   [arv-git-httpd-ssl]=9000
38   [arv-git-httpd]=9001
39   [keep-web]=9003
40   [keep-web-ssl]=9002
41   [keepproxy]=25100
42   [keepproxy-ssl]=25101
43   [keepstore0]=25107
44   [keepstore1]=25108
45   [ssh]=22
46   [doc]=8001
47   [websockets]=8005
48   [websockets-ssl]=8002
49   [webshell]=4201
50   [webshell-ssl]=4202
51 )
52
53 if test "$(id arvbox -u 2>/dev/null)" = 0 ; then
54     PGUSER=postgres
55     PGGROUP=postgres
56 else
57     PGUSER=arvbox
58     PGGROUP=arvbox
59 fi
60
61 run_bundler() {
62     if test -f Gemfile.lock ; then
63         # The 'gem install bundler line below' is cf.
64         # https://bundler.io/blog/2019/05/14/solutions-for-cant-find-gem-bundler-with-executable-bundle.html,
65         # until we get bundler 2.7.10/3.0.0 or higher
66         flock $GEM_HOME/gems.lock gem install bundler --no-document -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1|tr -d ' ')"
67         frozen=--frozen
68     else
69         frozen=""
70     fi
71     # if ! test -x $GEM_HOME/bin/bundler ; then
72     #   bundleversion=2.0.2
73     #     bundlergem=$(ls -r $GEM_HOME/cache/bundler-${bundleversion}.gem 2>/dev/null | head -n1 || true)
74     #     if test -n "$bundlergem" ; then
75     #         flock $GEM_HOME/gems.lock gem install --verbose --local --no-document $bundlergem
76     #     else
77     #         flock $GEM_HOME/gems.lock gem install --verbose --no-document bundler --version ${bundleversion}
78     #     fi
79     # fi
80     # Make sure to put the gem binaries in the right place
81     flock /var/lib/arvados/lib/ruby/gems/2.5.0/gems.lock bundler config bin $GEM_HOME/bin
82     if ! flock $GEM_HOME/gems.lock bundler install --verbose --local --no-deployment $frozen "$@" ; then
83         flock $GEM_HOME/gems.lock bundler install --verbose --no-deployment $frozen "$@"
84     fi
85 }
86
87 PYCMD=""
88 pip_install() {
89     pushd /var/lib/pip
90     for p in $(ls http*.tar.gz) $(ls http*.tar.bz2) $(ls http*.whl) $(ls http*.zip) ; do
91         if test -f $p ; then
92             ln -sf $p $(echo $p | sed 's/.*%2F\(.*\)/\1/')
93         fi
94     done
95     popd
96
97     if [ "$PYCMD" = "python3" ]; then
98         if ! pip3 install --prefix /usr/local --no-index --find-links /var/lib/pip $1 ; then
99             pip3 install --prefix /usr/local $1
100         fi
101     else
102         if ! pip install --no-index --find-links /var/lib/pip $1 ; then
103             pip install $1
104         fi
105     fi
106 }