Add Dockerfile for Claude Code
This commit is contained in:
58
run.sh
Executable file
58
run.sh
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user