#!/bin/sh -xe # Build and launch docker container. SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) TAG=bingmann/dev:claude-docker CONTAINER=claude-$(pwd | md5sum | cut -c1-8) if [[ "$1" == "bash" ]]; then docker exec --interactive --tty --user tb "$CONTAINER" /bin/bash exit 0 fi docker build $SCRIPT_DIR --tag "$TAG" if [[ "$1" == "push" ]]; then docker push "$TAG" exit 0 elif [[ "$1" == "build" ]]; then echo "Build completed for $TAG" exit 0 fi CMDS="$@" OPTS="" if [[ "$CMDS" == "" ]]; then CMDS="/usr/local/bin/init-firewall.sh" else OPTS="--user tb" fi CMDS="/bin/bash" OPTS="--user tb" # --network=host \ docker run --rm --interactive --tty \ --name "$CONTAINER" \ --cap-add=NET_ADMIN \ --cap-add=NET_RAW \ --log-driver none \ --network host \ -v "${XDG_RUNTIME_DIR}/pulse/native:${XDG_RUNTIME_DIR}/pulse/native" \ -v "$HOME/.config/pulse/cookie:/root/.config/pulse/cookie" \ -e "TERM=$TERM" \ -e "PULSE_SERVER=unix:${XDG_RUNTIME_DIR}/pulse/native" \ -v "$PWD/:$PWD/" \ -v "$HOME/.bash_history:/home/$(whoami)/.bash_history" \ -v "$HOME/.claude:/home/$(whoami)/.claude" \ -v "$HOME/.claude.json:/home/$(whoami)/.claude.json" \ -v "$HOME/.git-credentials:/home/$(whoami)/.git-credentials:ro" \ -e "DISPLAY=$DISPLAY" \ -v "/tmp/.X11-unix:/tmp/.X11-unix" \ --device /dev/dri --device /dev/snd --device /dev/vga_arbiter \ -w "$PWD" \ $OPTS \ "$TAG" "$CMDS"