18995: Merge branch 'main' into 18995-code-cleanup-5
[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 RUBY_VERSION=2.7.0
6 export BUNDLER_VERSION=2.2.19
7
8 export DEBIAN_FRONTEND=noninteractive
9 export PATH=${PATH}:/usr/local/go/bin:/var/lib/arvados/bin:/usr/src/arvados/sdk/cli/binstubs
10 export npm_config_cache=/var/lib/npm
11 export npm_config_cache_min=Infinity
12 export R_LIBS=/var/lib/Rlibs
13 export HOME=$(getent passwd arvbox | cut -d: -f6)
14 export ARVADOS_CONTAINER_PATH=/var/lib/arvados-arvbox
15 export GEM_HOME=$HOME/.gem
16 GEMLOCK=$HOME/gems.lock
17
18 defaultdev=$(/sbin/ip route|awk '/default/ { print $5 }')
19 dockerip=$(/sbin/ip route | grep default | awk '{ print $3 }')
20 containerip=$(ip addr show $defaultdev | grep 'inet ' | sed 's/ *inet \(.*\)\/.*/\1/')
21 if test -s /var/run/localip_override ; then
22     localip=$(cat /var/run/localip_override)
23 else
24     localip=$containerip
25 fi
26
27 root_cert=$ARVADOS_CONTAINER_PATH/root-cert.pem
28 root_cert_key=$ARVADOS_CONTAINER_PATH/root-cert.key
29 server_cert=$ARVADOS_CONTAINER_PATH/server-cert-${localip}.pem
30 server_cert_key=$ARVADOS_CONTAINER_PATH/server-cert-${localip}.key
31
32 declare -A services
33 services=(
34   [workbench]=443
35   [workbench2]=3000
36   [workbench2-ssl]=3001
37   [api]=8004
38   [controller]=8003
39   [controller-ssl]=8000
40   [arv-git-httpd-ssl]=9000
41   [arv-git-httpd]=9001
42   [keep-web]=9003
43   [keep-web-ssl]=9002
44   [keep-web-dl-ssl]=9004
45   [keepproxy]=25100
46   [keepproxy-ssl]=25101
47   [keepstore0]=25107
48   [keepstore1]=25108
49   [ssh]=22
50   [doc]=8001
51   [websockets]=8005
52   [websockets-ssl]=8002
53   [webshell]=4201
54   [webshell-ssl]=4202
55 )
56
57 if test "$(id arvbox -u 2>/dev/null)" = 0 ; then
58     PGUSER=postgres
59     PGGROUP=postgres
60 else
61     PGUSER=arvbox
62     PGGROUP=arvbox
63 fi
64
65 run_bundler() {
66     flock $GEMLOCK /var/lib/arvados/bin/gem install --no-document --user bundler:$BUNDLER_VERSION
67     if test -f Gemfile.lock ; then
68         frozen=--frozen
69     else
70         frozen=""
71     fi
72     BUNDLER=bundle
73     if test -x $PWD/bin/bundle ; then
74         # If present, use the one associated with rails workbench or API
75         BUNDLER=$PWD/bin/bundle
76     fi
77     if ! flock $GEMLOCK $BUNDLER install --verbose --local --no-deployment $frozen "$@" ; then
78         flock $GEMLOCK $BUNDLER install --verbose --no-deployment $frozen "$@"
79     fi
80 }
81
82 PYCMD=""
83 pip_install() {
84     pushd /var/lib/pip
85     for p in $(ls http*.tar.gz) $(ls http*.tar.bz2) $(ls http*.whl) $(ls http*.zip) ; do
86         if test -f $p ; then
87             ln -sf $p $(echo $p | sed 's/.*%2F\(.*\)/\1/')
88         fi
89     done
90     popd
91
92     if [ "$PYCMD" = "python3" ]; then
93         if ! pip3 install --prefix /usr/local --no-index --find-links /var/lib/pip $1 ; then
94             pip3 install --prefix /usr/local $1
95         fi
96     else
97         if ! pip install --no-index --find-links /var/lib/pip $1 ; then
98             pip install $1
99         fi
100     fi
101 }