devflow-devcontainer (latest)

Published 2026-10-21 16:54:47 -04:00 by david

Installation

docker pull git.domanico.us/david/devflow-devcontainer:latest
sha256:0d1bf8381f5a30ebc9ea80a6c6c4dbda6e03bfb33b775f2638d20cf8d1b6fdd6

Image Layers

# debian.sh --arch 'amd64' out/ 'bookworm' '@1791158400'
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates curl gnupg netbase sq wget ; rm -rf /var/lib/apt/lists/* # buildkit
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends git mercurial openssh-client subversion procps ; rm -rf /var/lib/apt/lists/* # buildkit
RUN /bin/sh -c set -ex; apt-get update; apt-get install -y --no-install-recommends autoconf automake bzip2 default-libmysqlclient-dev dpkg-dev file g++ gcc imagemagick libbz2-dev libc6-dev libcurl4-openssl-dev libdb-dev libevent-dev libffi-dev libgdbm-dev libglib2.0-dev libgmp-dev libjpeg-dev libkrb5-dev liblzma-dev libmagickcore-dev libmagickwand-dev libmaxminddb-dev libncurses5-dev libncursesw5-dev libpng-dev libpq-dev libreadline-dev libsqlite3-dev libssl-dev libtool libwebp-dev libxml2-dev libxslt-dev libyaml-dev make patch unzip xz-utils zlib1g-dev ; rm -rf /var/lib/apt/lists/* # buildkit
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV LANG=C.UTF-8
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends libbluetooth-dev tk-dev uuid-dev ; rm -rf /var/lib/apt/lists/* # buildkit
ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
ENV PYTHON_VERSION=3.12.15
ENV PYTHON_SHA256=c2c4321961fab0fb999d66e0cecf521c2ab3994c7992873ea99e306c1094fd5a
RUN /bin/sh -c set -eux; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; case "$arch" in amd64|arm64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; i386) ;; *) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer"; ;; esac; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\$\$ORIGIN/../lib'" python ; make install; bin="$(readlink -ve /usr/local/bin/python3)"; dir="$(dirname "$bin")"; mkdir -p "/usr/share/gdb/auto-load/$dir"; cp -vL Tools/gdb/libpython.py "/usr/share/gdb/auto-load/$bin-gdb.py"; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit
RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit
CMD ["python3"]
RUN /bin/sh -c apt-get update && export DEBIAN_FRONTEND=noninteractive && apt-get purge -y imagemagick imagemagick-6-common # buildkit
RUN /bin/sh -c python3 -m pip install --upgrade gitpython==3.1.60 setuptools==83.0.0 wheel==0.46.3 # buildkit
COPY ./scripts/install-subversion.sh /tmp/install-subversion.sh # buildkit
RUN /bin/sh -c chmod +x /tmp/install-subversion.sh # buildkit
RUN /bin/sh -c /tmp/install-subversion.sh && rm -f /tmp/install-subversion.sh # buildkit
COPY meta.env /usr/local/etc/vscode-dev-containers/ # buildkit
LABEL version=3.2.6
LABEL dev.containers.id=python
LABEL dev.containers.variant=3.12-bookworm
LABEL dev.containers.release=v0.4.35
LABEL dev.containers.source=https://github.com/devcontainers/images
LABEL dev.containers.timestamp=Fri, 09 Oct 2026 18:56:51 GMT
ARG _DEV_CONTAINERS_BASE_IMAGE=dev_container_auto_added_stage_label
USER root
RUN |1 _DEV_CONTAINERS_BASE_IMAGE=dev_container_auto_added_stage_label /bin/sh -c mkdir -p /tmp/dev-container-features # buildkit
COPY /tmp/build-features/ /tmp/dev-container-features # buildkit
RUN |1 _DEV_CONTAINERS_BASE_IMAGE=dev_container_auto_added_stage_label /bin/sh -c echo "_CONTAINER_USER_HOME=$( (command -v getent >/dev/null 2>&1 && getent passwd 'root' || grep -E '^root|^[^:]*:[^:]*:root:' /etc/passwd || true) | cut -d: -f6)" >> /tmp/dev-container-features/devcontainer-features.builtin.env && echo "_REMOTE_USER_HOME=$( (command -v getent >/dev/null 2>&1 && getent passwd 'vscode' || grep -E '^vscode|^[^:]*:[^:]*:vscode:' /etc/passwd || true) | cut -d: -f6)" >> /tmp/dev-container-features/devcontainer-features.builtin.env # buildkit
RUN |1 _DEV_CONTAINERS_BASE_IMAGE=dev_container_auto_added_stage_label /bin/sh -c cp -ar /tmp/build-features-src/common-utils_0 /tmp/dev-container-features && chmod -R 0755 /tmp/dev-container-features/common-utils_0 && cd /tmp/dev-container-features/common-utils_0 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh && rm -rf /tmp/dev-container-features/common-utils_0 # buildkit
RUN |1 _DEV_CONTAINERS_BASE_IMAGE=dev_container_auto_added_stage_label /bin/sh -c cp -ar /tmp/build-features-src/git_1 /tmp/dev-container-features && chmod -R 0755 /tmp/dev-container-features/git_1 && cd /tmp/dev-container-features/git_1 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh && rm -rf /tmp/dev-container-features/git_1 # buildkit
ENV NVM_DIR=/usr/local/share/nvm
ENV NVM_SYMLINK_CURRENT=true
ENV PATH=/usr/local/share/nvm/current/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN |1 _DEV_CONTAINERS_BASE_IMAGE=dev_container_auto_added_stage_label /bin/sh -c cp -ar /tmp/build-features-src/node_2 /tmp/dev-container-features && chmod -R 0755 /tmp/dev-container-features/node_2 && cd /tmp/dev-container-features/node_2 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh && rm -rf /tmp/dev-container-features/node_2 # buildkit
ENV PYTHON_PATH=/usr/local/python/current
ENV PIPX_HOME=/usr/local/py-utils
ENV PIPX_BIN_DIR=/usr/local/py-utils/bin
ENV PATH=/usr/local/python/current/bin:/usr/local/py-utils/bin:/usr/local/jupyter:/usr/local/share/nvm/current/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN |1 _DEV_CONTAINERS_BASE_IMAGE=dev_container_auto_added_stage_label /bin/sh -c cp -ar /tmp/build-features-src/python_3 /tmp/dev-container-features && chmod -R 0755 /tmp/dev-container-features/python_3 && cd /tmp/dev-container-features/python_3 && chmod +x ./devcontainer-features-install.sh && ./devcontainer-features-install.sh && rm -rf /tmp/dev-container-features/python_3 # buildkit
ARG _DEV_CONTAINERS_IMAGE_USER=root
USER root
LABEL devcontainer.metadata=[ {"id":"ghcr.io/devcontainers/features/common-utils:2"}, {"id":"ghcr.io/devcontainers/features/git:1","customizations":{"vscode":{"settings":{"github.copilot.chat.codeGeneration.instructions":[{"text":"This dev container includes an up-to-date version of Git, built from source as needed, pre-installed and available on the `PATH`."}]}}}}, {"id":"ghcr.io/devcontainers/features/node:2","customizations":{"vscode":{"extensions":["dbaeumer.vscode-eslint"],"settings":{"github.copilot.chat.codeGeneration.instructions":[{"text":"This dev container includes `node`, `npm` and `eslint` pre-installed and available on the `PATH` for Node.js and JavaScript development."}]}}}}, {"id":"ghcr.io/devcontainers/features/python:1","customizations":{"vscode":{"extensions":["ms-python.python","ms-python.vscode-pylance","ms-python.autopep8"],"settings":{"github.copilot.chat.codeGeneration.instructions":[{"text":"This dev container includes `python3` and `pip3` pre-installed and available on the `PATH`, along with the Python language extensions for Python development."}],"python.defaultInterpreterPath":"/usr/local/python/current/bin/python","[python]":{"editor.defaultFormatter":"ms-python.autopep8"}}}}}, {"customizations":{"vscode":{"settings":{"python.defaultInterpreterPath":"/usr/local/bin/python"}}},"remoteUser":"vscode"} ]
SHELL [/bin/bash -o pipefail -c]
COPY /uv /uvx /usr/local/bin/ # buildkit
ARG GITLEAKS_VERSION=8.30.1
ARG GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb
RUN |2 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb /bin/bash -o pipefail -c apt-get update && apt-get install -y --no-install-recommends tmux ripgrep shellcheck jq && rm -rf /var/lib/apt/lists/* && curl -fsSLo /tmp/gitleaks.tgz "https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" && echo "${GITLEAKS_SHA256} /tmp/gitleaks.tgz" | sha256sum -c - && tar -xzf /tmp/gitleaks.tgz -C /usr/local/bin gitleaks && rm /tmp/gitleaks.tgz && chsh -s /usr/bin/zsh vscode && install -d -m 0755 -o vscode -g vscode /home/vscode/.claude && install -d -m 0700 -o vscode -g vscode /home/vscode/.config/devflow # buildkit
COPY gitconfig /etc/gitconfig # buildkit
USER vscode
COPY --chown=vscode:vscode user-gitconfig /home/vscode/.gitconfig # buildkit
RUN |2 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb /bin/bash -o pipefail -c install -d -m 0700 /home/vscode/.gnupg /home/vscode/.gnupg/private-keys-v1.d && echo "Placeholder, not a key: it makes Dev Containers skip gpg-agent forwarding (devflow IMG-03, plan 04-14)." > /home/vscode/.gnupg/private-keys-v1.d/README && chmod 0600 /home/vscode/.gnupg/private-keys-v1.d/README # buildkit
ENV PATH=/home/vscode/.local/bin:/usr/local/python/current/bin:/usr/local/py-utils/bin:/usr/local/jupyter:/usr/local/share/nvm/current/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin CLAUDE_CONFIG_DIR=/home/vscode/.claude CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1
ARG NODE_VERSION=24.22.0
RUN |3 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb NODE_VERSION=24.22.0 /bin/bash -o pipefail -c source /usr/local/share/nvm/nvm.sh && nvm install "${NODE_VERSION}" && nvm alias default "${NODE_VERSION}" && nvm use default && nvm cache clear # buildkit
RUN |3 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb NODE_VERSION=24.22.0 /bin/bash -o pipefail -c test "$(node --version)" = "v${NODE_VERSION}" # buildkit
RUN |3 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb NODE_VERSION=24.22.0 /bin/bash -o pipefail -c curl -fsSL https://claude.ai/install.sh | bash -s stable # buildkit
COPY --chown=vscode:vscode devflow-*.whl requirements.txt /tmp/devflow/ # buildkit
RUN |3 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb NODE_VERSION=24.22.0 /bin/bash -o pipefail -c uv venv --no-cache --python /usr/local/bin/python3.12 /home/vscode/.local/share/devflow-tools/devflow && uv pip install --no-cache --python /home/vscode/.local/share/devflow-tools/devflow/bin/python --require-hashes --no-build -r /tmp/devflow/requirements.txt && uv pip install --no-cache --python /home/vscode/.local/share/devflow-tools/devflow/bin/python --no-deps --no-index /tmp/devflow/devflow-*.whl && uv pip check --python /home/vscode/.local/share/devflow-tools/devflow/bin/python && mkdir -p /home/vscode/.local/bin && ln -s /home/vscode/.local/share/devflow-tools/devflow/bin/{flow,ops,aws-login,devflow-provision-git} /home/vscode/.local/bin/ && rm -rf /tmp/devflow # buildkit
RUN |3 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb NODE_VERSION=24.22.0 /bin/bash -o pipefail -c npm install -g @opengsd/gsd-core@latest @bitwarden/cli@2026.10.0 && npm cache clean --force # buildkit
RUN |3 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb NODE_VERSION=24.22.0 /bin/bash -o pipefail -c claude plugin marketplace add obra/superpowers-marketplace # buildkit
COPY --chown=vscode:vscode tmux.conf /home/vscode/.tmux.conf # buildkit
COPY --chown=vscode:vscode terminal-title.zsh /home/vscode/.oh-my-zsh/custom/terminal-title.zsh # buildkit
COPY --chown=vscode:vscode ssh-agent-warning.zsh /home/vscode/.oh-my-zsh/custom/ssh-agent-warning.zsh # buildkit
RUN |3 GITLEAKS_VERSION=8.30.1 GITLEAKS_SHA256=551f6fc83ea457d62a0d98237cbad105af8d557003051f41f3e7ca7b3f2470eb NODE_VERSION=24.22.0 /bin/bash -o pipefail -c claude --version && flow --version && ops --help >/dev/null && aws-login --help >/dev/null && devflow-provision-git --help >/dev/null && gitleaks version && uv --version && node --version && bw --version && gsd-core --help >/dev/null && tmux -V && jq --version && rg --version && shellcheck --version && zsh --version && flow doctor --help >/dev/null && zsh -n /home/vscode/.oh-my-zsh/custom/ssh-agent-warning.zsh && rm -rf /home/vscode/.claude/.claude.json /home/vscode/.claude/backups /home/vscode/.claude/sessions "/home/vscode/.config/Bitwarden CLI" /home/vscode/.npm # buildkit
LABEL devcontainer.metadata=[{"remoteUser":"vscode","shutdownAction":"none","containerEnv":{"CLAUDE_CONFIG_DIR":"/home/vscode/.claude","CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN":"1","CLAUDE_CODE_PLUGIN_PREFER_HTTPS":"1"},"postCreateCommand":"sudo chown vscode:vscode /home/vscode/.claude /home/vscode/.config /home/vscode/.config/devflow && flow setup","customizations":{"vscode":{"settings":{"dev.containers.gitCredentialHelperConfigLocation":"none","dev.containers.dockerCredentialHelper":false,"dev.containers.copyGitConfig":false,"remote.localPortHost":"localhost"}}}}]

Labels

Key Value
dev.containers.id python
dev.containers.release v0.4.35
dev.containers.source https://github.com/devcontainers/images
dev.containers.timestamp Fri, 09 Oct 2026 18:56:51 GMT
dev.containers.variant 3.12-bookworm
devcontainer.metadata [{"remoteUser":"vscode","shutdownAction":"none","containerEnv":{"CLAUDE_CONFIG_DIR":"/home/vscode/.claude","CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN":"1","CLAUDE_CODE_PLUGIN_PREFER_HTTPS":"1"},"postCreateCommand":"sudo chown vscode:vscode /home/vscode/.claude /home/vscode/.config /home/vscode/.config/devflow && flow setup","customizations":{"vscode":{"settings":{"dev.containers.gitCredentialHelperConfigLocation":"none","dev.containers.dockerCredentialHelper":false,"dev.containers.copyGitConfig":false,"remote.localPortHost":"localhost"}}}}]
org.opencontainers.image.revision 9c73a88532e3c13cd9ccc6979f49bff96a03f2b6
org.opencontainers.image.source https://git.domanico.us/david/devflow
org.opencontainers.image.version 0.1.7
version 3.2.6
Details
Container
2026-10-21 16:54:47 -04:00
1
OCI / Docker
linux/amd64
969 MiB
Versions (9) View all
latest 2026-10-21
0.1.7 2026-10-21
0.1.6 2026-10-21
0.1.5 2026-10-21
0.1.4 2026-10-20