blob: 1a75046eb460502820c67719ba603a9f88e0dddf [file] [log] [blame]
#!/bin/bash
set -e
GIT_ROOT=$(git rev-parse --show-toplevel)
port=8080
build_avm=0
build_docker=1
while [[ "$#" -gt 0 ]]; do
case $1 in
--port) port="$2"; shift ;;
--streams_dir) streams_dir="$2"; shift ;;
--avm_build_dir) build_avm=0; avm_build_dir="$2"; shift ;;
--build_avm_standalone) build_avm=1 ;;
--nobuild) build_docker=0 ;;
*) echo "Unknown arg: $1"; exit 1 ;;
esac
shift
done
if [[ -z ${streams_dir} ]]; then
echo "Usage: ./launch_server_docker.sh --streams_dir <STREAMS_PATH> [--nobuild] [--avm_build_dir <CUSTOM_AVM_BUILD_DIR>] [--port <PORT>] [--build_avm_standalone]"
exit 1
fi
# Note: When switching between local and docker builds, there may be permissions errors on the streams dir since the file owner with docker will be root.
# Wiping the dir before switching is recommended.
mkdir -p ${streams_dir}
if [[ ${build_docker} -eq 1 ]]; then
# Build the runtime base image first. This contains no Rust dependencies, only what's needed to build libavm.
docker build -t avm_analyzer_runtime -f Dockerfile.runtime ${GIT_ROOT}
docker build -t avm_analyzer -f Dockerfile.builder ${GIT_ROOT}
fi
if [[ ${build_avm} -eq 1 ]]; then
./build_avm_docker.sh --avm_build_dir ${avm_build_dir}
fi
avm_build_dir_mount=()
if [[ -n ${avm_build_dir} ]]; then
avm_build_dir_mount=("-v $(realpath ${avm_build_dir}):/avm_build:ro")
fi
SERVER_CMD="/app/avm-analyzer-server --extract-proto /avm_build/extract_proto\
--dump-obu /avm_build/tools/dump_obu --working-dir /streams\
--frontend-root /app/dist --ip 0.0.0.0 --port 8080"
docker run -it --init --rm -p 127.0.0.1:${port}:8080 -v ${streams_dir}:/streams ${avm_build_dir_mount[@]} avm_analyzer ${SERVER_CMD}