0b9874295c58af71da7fc846255c413e3f9d8e1c
[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 srcdir in "$@"; do
44     echo >&2 "building $srcdir..."
45     (cd $srcdir && GOBIN=$tmpdir go install -ldflags "-X git.arvados.org/arvados.git/lib/cmd.version=${version} -X main.version=${version}")
46     cmd="$(basename "$srcdir")"
47     volargs+=(-v "$tmpdir/$cmd:/var/lib/arvados/bin/$cmd:ro")
48 done
49
50 osbase=debian:10
51 installimage=arvados-installpackage-${osbase}
52 command="/var/lib/arvados/bin/arvados-server boot -listen-host 0.0.0.0"
53 if [[ "${opts[shell]}" ]]; then
54     command="bash -login"
55 fi
56 docker run -it --rm \
57        "${volargs[@]}" \
58        "${installimage}" \
59        bash -c "/etc/init.d/postgresql start && /var/lib/arvados/bin/arvados-server init -cluster-id x1234 && $command"