2 # Copyright (C) The Arvados Authors. All rights reserved.
4 # SPDX-License-Identifier: AGPL-3.0
6 # Build an arvados-server-easy package, then install and run it on a
11 # docker-build-install.sh --force-buildimage --force-installimage # always build fresh docker images
13 # docker-build-install.sh # reuse cached docker images if possible
18 while [[ $# -gt 0 ]]; do
23 opts[force-buildimage]=1
26 opts[force-installimage]=1
33 echo >&2 "invalid argument '$arg'"
40 if [[ -n "${buildctr}" ]]; then
41 docker rm "${buildctr}" || true
43 if [[ -n "${installctr}" ]]; then
44 docker rm "${installctr}" || true
49 version=$(git describe --tag --dirty)
50 osbase=${opts[os]:-debian:10}
54 buildimage=arvados-buildpackage-${osbase}
55 if [[ "${opts[force-buildimage]}" || -z "$(docker images --format {{.Repository}} "${buildimage}")" ]]; then
57 echo >&2 building arvados-server...
61 echo >&2 building ${buildimage}...
62 buildctr=${buildimage/:/-}
63 docker rm "${buildctr}" || true
65 --name "${buildctr}" \
67 -v "${GOPATH:-${HOME}/go}"/bin/arvados-server:/arvados-server:ro \
68 -v "$(pwd)":/arvados:ro \
70 /arvados-server install \
73 -package-version "${version}"
74 docker commit "${buildctr}" "${buildimage}"
75 docker rm "${buildctr}"
79 pkgfile=/tmp/pkg/arvados-server-easy_${version}_amd64.deb
83 echo >&2 building arvados-dev...
87 echo >&2 building ${pkgfile}...
90 -v "${GOPATH:-${HOME}/go}"/bin/arvados-dev:/arvados-dev:ro \
91 -v "$(pwd)":/arvados:ro \
93 /arvados-dev buildpackage \
95 -package-version "${version}" \
96 -output-directory /pkg
100 echo >&2 dpkg-scanpackages...
102 dpkg-scanpackages . | gzip > Packages.gz
104 sourcesfile=/tmp/sources.conf.d-arvados
105 echo >$sourcesfile "deb [trusted=yes] file:///pkg ./"
107 installimage="arvados-installpackage-${osbase}"
108 if [[ "${opts[force-installimage]}" || -z "$(docker images --format {{.Repository}} "${installimage}")" ]]; then
109 echo >&2 building ${installimage}...
110 installctr=${installimage/:/-}
111 docker rm "${installctr}" || true
113 --name "${installctr}" \
114 -v /tmp/pkg:/pkg:ro \
115 -v ${sourcesfile}:/etc/apt/sources.list.d/arvados-local.list:ro \
117 bash -c 'apt update && DEBIAN_FRONTEND=noninteractive apt install -y arvados-server-easy postgresql'
118 docker commit "${installctr}" "${installimage}"
119 docker rm "${installctr}"
123 echo >&2 installing ${pkgfile} in ${installimage}, then starting arvados...
124 docker run -it --rm \
125 -v /tmp/pkg:/pkg:ro \
126 -v ${sourcesfile}:/etc/apt/sources.list.d/arvados-local.list:ro \
128 bash -c 'apt update && DEBIAN_FRONTEND=noninteractive apt install --reinstall -y arvados-server-easy postgresql && /etc/init.d/postgresql start && /var/lib/arvados/bin/arvados-server init -cluster-id x1234 && /var/lib/arvados/bin/arvados-server boot -listen-host 0.0.0.0'