#!/usr/bin/env bash # Start (or restart) just the mock frps2/frps3 containers on the demo network, # leaving the rest of the cluster untouched. Used by test-forward.sh and when # the cluster is already running but the mock frps nodes are not. set -euo pipefail cd "$(dirname "$0")" FRP=${FRP:-/home/jianf/Program/frp/bin} NET=${W4F_NET:-w4f-demo} # detect which network the existing nodes live on (compose uses "w4f") if docker inspect w4f-node-a >/dev/null 2>&1; then NET=$(docker inspect -f '{{range $k,$v := .NetworkSettings.Networks}}{{$k}}{{end}}' w4f-node-a 2>/dev/null || echo "$NET") fi start_one() { local name="$1" alias="$2" cfg="$3" bp="$4" vp="$5" docker rm -f "$name" >/dev/null 2>&1 || true docker run -d --name "$name" --user "$(id -u):$(id -g)" \ --network "$NET" --network-alias "$alias" \ -p "$bp:$bp" -p "$vp:$vp" \ -v "$FRP/frps:/app/frps:ro" -v "$PWD/$cfg:/app/frps.toml:ro" \ --restart unless-stopped --entrypoint /app/frps \ debian:bookworm-slim -c /app/frps.toml >/dev/null echo " $name up ($alias, bindPort $bp, vhost $vp) on network $NET" } echo "== starting mock frps nodes on network $NET ==" start_one w4f-frps2 frps2 frps2.toml 7001 7081 start_one w4f-frps3 frps3 frps3.toml 7002 7082 echo "== mock frps nodes up ==" docker ps --filter "name=w4f-frps" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"