commit fccc51997aa1cb4a6401e3b1b89b9ef50bded438 Author: Michael Smith Date: Tue Mar 17 14:50:05 2026 +0100 Inital commit diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e02b001 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,40 @@ +FROM debian:trixie + +RUN apt-get update -y && \ + apt-get install -y --no-install-recommends \ + git \ + nodejs \ + npm \ + vim \ + btop \ + curl \ + wget \ + jq \ + yq \ + ca-certificates \ + ssh \ + dnsutils && \ + rm -rf /var/lib/apt/lists/* + +ENV COLORTERM=truecolor + +# Install Openspec +RUN npm i -g @fission-ai/openspec@latest + +RUN useradd -ms /bin/bash m + +USER m +WORKDIR /workspace + +# Install Claude Code CLI +RUN curl -fsSL https://claude.ai/install.sh | bash + +RUN mkdir -p ~/.ssh +RUN chmod 700 ~/.ssh +RUN ssh-keyscan github.com >> ~/.ssh/known_hosts + +RUN echo 'alias clauded="claude --dangerously-skip-permissions"' >> ~/.bashrc +RUN echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc + +# Default command - keep container running +CMD ["bash"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bd760ab --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +DOCKER_IMAGE_NAME = claude-sdr-recorder +DOCKER_CONTAINER_NAME = claude-sdr-recorder + +.PHONY: build run stop shell restart clean logs status + +build: + docker build -t $(DOCKER_IMAGE_NAME) . + +run: + docker run -d \ + --name $(DOCKER_CONTAINER_NAME) \ + --hostname $(DOCKER_CONTAINER_NAME) \ + -v $(PWD):/workspace \ + -v $(HOME)/.claude:/home/m/.claude \ + -e CLAUDE_CONFIG_DIR=/home/m/.claude \ + -v $(HOME)/.ssh/known_hosts:/home/m/.ssh/known_hosts:ro \ + -v $(HOME)/.gitconfig:/home/m/.gitconfig:ro \ + -v $(HOME)/.gitignore:/home/m/.gitignore:ro \ + -v $(PWD)/ssh_config:/home/m/.ssh/config \ + -v /run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock \ + -e SSH_AUTH_SOCK=/run/host-services/ssh-auth.sock \ + -it \ + $(DOCKER_IMAGE_NAME) + @echo "Container started. Use 'make shell' to access it" + +stop: + docker stop $(DOCKER_CONTAINER_NAME) || true + docker rm $(DOCKER_CONTAINER_NAME) || true + +shell: + docker exec -it $(DOCKER_CONTAINER_NAME) bash + +restart: stop run + +clean: stop + docker rmi $(DOCKER_IMAGE_NAME) || true + +logs: + docker logs -f $(DOCKER_CONTAINER_NAME) + +status: + @docker ps -a --filter name=$(DOCKER_CONTAINER_NAME)