AI Coding#

Claude Code#

Containerizing#

  • Doityourself

AI Into A Jail#

Prepackaged Aider from Dockerhub: paulgauthier/aider (the aider developer), last release 4 months ago

$ docker run -it --rm \
  -v $(pwd):/workspace \
  -w /workspace \
  -e OPENAI_API_KEY=$OPENAI_API_KEY \
  paulgauthier/aider

Have to do this myself, asking claude.

# Use the full-featured, standard Python image
FROM python:3.12

# Install git (required by aider), cmake, and clean up apt caches to save space
RUN apt-get update && apt-get install -y --no-install-recommends \
    git \
    cmake \
    doxygen \
    emacs-nox \
    && rm -rf /var/lib/apt/lists/*

RUN apt-get update && apt-get install -y --no-install-recommends \
    git \
    && rm -rf /var/lib/apt/lists/*

# Install aider
RUN pip install --no-cache-dir aider-chat

# Set the working directory where your local repository will be mounted
WORKDIR /workspace

ENV HOME=/workspace

#CMD ["emacs"]

# Set aider as the default executable
ENTRYPOINT ["aider", "--cache-promts", "--no-stream", "/workspace"]

# ENTRYPOINT ["ls", "/workspace"]
# ENTRYPOINT python # <-- works
$ docker build -t aider-jail .
$ docker images --no-trunc
REPOSITORY   TAG       IMAGE ID                                                                  CREATED         SIZE
aider-jail   latest    sha256:b2a60396ce53544493ff0b198bb7d8e812909e54ab38446f7e949349d271f66f   8 minutes ago   1.75GB
fedora       41        sha256:1e77ba7428ee878eaef53a52e72ed1cb268e000e54ba4e8c2755eb776867b1af   13 months ago   161MB
ANTHROPIC_API_KEY=<...>
$ docker run -it --rm \
    -v $(pwd):/workspace \
    -e ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} \
    aider-jail

$ docker run -it --rm \
    -v $(pwd)/..:/workspace \
    aider-jail

:z messes with selinux on fedora, gemini says

ANTHROPIC_API_KEY=<...>
$ docker run -it --rm \
    --user $(id -u):$(id -g) \
    -e HOME=/workspace \
    -e ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} \
    -v ${HOME}/My-Projects/homepage/jfasch-home:/workspace:z \
    aider-jail


$ docker run -it --rm \
    --user $(id -u):$(id -g) \
    -e HOME=/workspace \
    -e ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} \
    -v ${HOME}/My-Projects/homepage/jfasch-home:/workspace:z \
    -v ${HOME}/My-Builds/jfasch-home-aider:/builddir:z \
    aider-jail