#!/bin/bash # Start Phoenix + Livebook together. Livebook attaches to the Phoenix node # and gets full access to Repo, Scorer, Weather, etc. # # Usage: bin/notebook # Then open http://localhost:8081 set -e COOKIE="microwaveprop_nb" NODE="prop@$(hostname -s)" PORT="${LIVEBOOK_PORT:-8081}" NOTEBOOK="notebooks/algorithm_analysis.livemd" echo "Starting Phoenix on :4000 and Livebook on :${PORT}..." echo "Livebook will be at http://localhost:${PORT}" echo "" # Start Phoenix in background with a node name elixir --sname prop --cookie "$COOKIE" -S mix phx.server & PHOENIX_PID=$! # Wait for the node to come up sleep 3 # Start Livebook attached to the Phoenix node LIVEBOOK_HOME="$(pwd)/notebooks" \ livebook server \ --port "$PORT" \ --default-runtime "attached:${NODE}:${COOKIE}" \ --open "$NOTEBOOK" & LIVEBOOK_PID=$! # Trap ctrl-c to kill both trap "kill $PHOENIX_PID $LIVEBOOK_PID 2>/dev/null; exit" INT TERM echo "Phoenix PID: $PHOENIX_PID, Livebook PID: $LIVEBOOK_PID" echo "Press Ctrl-C to stop both." wait