16306: Fixup nginx in arvados-boot production mode.
[arvados.git] / cmd / arvados-dev / docker-boot.sh
1 #!/bin/bash
2 # Copyright (C) The Arvados Authors. All rights reserved.
3 #
4 # SPDX-License-Identifier: AGPL-3.0
5
6 # Bring up a docker container with some locally-built commands (e.g.,
7 # cmd/arvados-server) replacing the ones that came with
8 # arvados-server-easy when the arvados-installpackage-* image was
9 # built.
10 #
11 # Assumes docker-build-install.sh has already succeeded.
12 #
13 # Example:
14 #
15 #    docker-boot.sh cmd/arvados-server services/keep-balance
16
17 set -e -o pipefail
18
19 declare -A opts=()
20 while [[ $# -gt 0 ]]; do
21     case "$1" in
22         --shell)
23             shift
24             opts[shell]=1
25             ;;
26         *)
27             break
28             ;;
29     esac
30 done
31
32 cleanup() {
33     if [[ -n "${tmpdir}" ]]; then
34         rm -rf "${tmpdir}"
35     fi
36 }
37 trap cleanup ERR EXIT
38
39 tmpdir=$(mktemp -d)
40 version=$(git describe --tag --dirty)
41
42 declare -a volargs=()
43 for inject in "$@"; do
44     case "$inject" in
45         nginx.conf)
46             volargs+=(-v "$(pwd)/sdk/python/tests/$inject:/var/lib/arvados/share/$inject:ro")
47             ;;
48         *)
49             echo >&2 "building $inject..."
50             (cd $inject && GOBIN=$tmpdir go install -ldflags "-X git.arvados.org/arvados.git/lib/cmd.version=${version} -X main.version=${version}")
51             cmd="$(basename "$inject")"
52             volargs+=(-v "$tmpdir/$cmd:/var/lib/arvados/bin/$cmd:ro")
53             ;;
54     esac
55 done
56
57 osbase=debian:10
58 installimage=arvados-installpackage-${osbase}
59 command="/var/lib/arvados/bin/arvados-server boot -listen-host 0.0.0.0"
60 if [[ "${opts[shell]}" ]]; then
61     command="bash -login"
62 fi
63 docker run -it --rm \
64        "${volargs[@]}" \
65        "${installimage}" \
66        bash -c "/etc/init.d/postgresql start && /var/lib/arvados/bin/arvados-server init -cluster-id x1234 && $command"