59 lines
1.5 KiB
Bash
Executable File
59 lines
1.5 KiB
Bash
Executable File
#!/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"
|