Block a user
devbox-dotnet (latest)
Published 2026-08-01 20:43:26 +00:00 by chris
Installation
docker pull forgejo.lenny.satsri.co.za/chris/devbox-dotnet:latestsha256:af75c0b7d27894735466a28391d4188f0a1ad68938df95463360e605d021a2b2
Image Layers
| ARG RELEASE |
| ARG LAUNCHPAD_BUILD_ARCH |
| LABEL org.opencontainers.image.version=24.04 |
| ADD file:46ac5b8ee4c64ad9ebe840abd5619f571a617ac19483764d47d0eeba7907934f in / |
| CMD ["/bin/bash"] |
| SHELL [/bin/bash -c] |
| ENV DEBIAN_FRONTEND=noninteractive |
| RUN /bin/bash -c apt-get update && apt-get upgrade --yes --no-install-recommends --no-install-suggests && apt-get install --yes --no-install-recommends --no-install-suggests ca-certificates && rm -rf /var/lib/apt/lists/* # buildkit |
| COPY docker-archive-keyring.gpg /usr/share/keyrings/docker-archive-keyring.gpg # buildkit |
| COPY docker.list /etc/apt/sources.list.d/docker.list # buildkit |
| RUN /bin/bash -c apt-get update && apt-get install --yes --no-install-recommends --no-install-suggests bash build-essential containerd.io curl docker-ce docker-ce-cli docker-buildx-plugin docker-compose-plugin htop jq locales man pipx python3 python3-pip software-properties-common sudo systemd systemd-sysv unzip vim wget rsync iproute2 && add-apt-repository ppa:git-core/ppa && apt-get install --yes git && rm -rf /var/lib/apt/lists/* # buildkit |
| RUN /bin/bash -c systemctl enable docker # buildkit |
| RUN /bin/bash -c ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/bin/docker-compose # buildkit |
| RUN /bin/bash -c locale-gen en_US.UTF-8 # buildkit |
| ENV LANG=en_US.UTF-8 |
| ENV LANGUAGE=en_US.UTF-8 |
| ENV LC_ALL=en_US.UTF-8 |
| RUN /bin/bash -c userdel -r ubuntu && useradd coder --create-home --shell=/bin/bash --groups=docker --uid=1000 --user-group && echo "coder ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers.d/nopasswd # buildkit |
| USER coder |
| RUN /bin/bash -c pipx ensurepath # adds user's bin directory to PATH # buildkit |
| USER root |
| RUN /bin/bash -c DEBIAN_FRONTEND=noninteractive apt-get update -y # buildkit |
| RUN /bin/bash -c DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y --no-install-recommends; # buildkit |
| RUN /bin/bash -c DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ncdu mtr-tiny; # buildkit |
| USER coder |
| USER root |
| RUN /bin/bash -c apt-get update -qq && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends socat && apt-get clean && rm -rf /var/lib/apt/lists/* # buildkit |
| ENV NVM_DIR=/usr/local/nvm |
| ENV PATH=/usr/local/nvm/versions/node/active/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| RUN /bin/bash -c mkdir -p "$NVM_DIR" && chown -R coder:coder "$NVM_DIR" # buildkit |
| USER coder |
| RUN /bin/bash -c curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/refs/heads/master/install.sh" | bash # buildkit |
| RUN /bin/bash -c test -s "$NVM_DIR/nvm.sh" && echo "nvm.sh found at $NVM_DIR" || (echo "nvm install failed" && exit 1) # buildkit |
| RUN /bin/bash -c bash -c "source $NVM_DIR/nvm.sh && nvm install 20 && nvm alias default 20 && nvm use default && npm install -g @kilocode/cli && npm install -g @openai/codex && ln -sfn \$NVM_DIR/versions/node/\$(nvm version default) \$NVM_DIR/versions/node/active" # buildkit |
| RUN /bin/bash -c echo "[ Installing Claude Code (native installer) ]" && curl -fsSL https://claude.ai/install.sh | bash && "$HOME/.local/bin/claude" --version # buildkit |
| RUN /bin/bash -c echo "[ Installing uv (for MiniMax's official Python MCP servers) ]" && curl -LsSf https://astral.sh/uv/install.sh | sh && "$HOME/.local/bin/uv" --version # buildkit |
| RUN /bin/bash -c CLAUDE="$HOME/.local/bin/claude" && echo "[ Installing Claude Code plugins: frontend-design, superpowers, code-review, typescript-lsp, impeccable, context7, playwright, ralph-loop, playground, feature-dev, serena, figma, code-simplifier, github, claude-security, security-guidance ]" && ( "$CLAUDE" plugin marketplace update claude-plugins-official || "$CLAUDE" plugin marketplace add anthropics/claude-plugins-official ) && "$CLAUDE" plugin install frontend-design@claude-plugins-official && "$CLAUDE" plugin install superpowers@claude-plugins-official && "$CLAUDE" plugin install code-review@claude-plugins-official && "$CLAUDE" plugin install typescript-lsp@claude-plugins-official && "$CLAUDE" plugin install playwright@claude-plugins-official && "$CLAUDE" plugin install ralph-loop@claude-plugins-official && "$CLAUDE" plugin install playground@claude-plugins-official && "$CLAUDE" plugin install feature-dev@claude-plugins-official && "$CLAUDE" plugin install serena@claude-plugins-official && "$CLAUDE" plugin install figma@claude-plugins-official && "$CLAUDE" plugin install code-simplifier@claude-plugins-official && "$CLAUDE" plugin install github@claude-plugins-official && "$CLAUDE" plugin install claude-security@claude-plugins-official && "$CLAUDE" plugin install security-guidance@claude-plugins-official && "$CLAUDE" plugin marketplace add pbakaus/impeccable && "$CLAUDE" plugin install impeccable@impeccable && "$CLAUDE" plugin marketplace add upstash/context7 && "$CLAUDE" plugin install context7@context7-marketplace # buildkit |
| RUN /bin/bash -c echo "[ Installing Codex CLI plugins: frontend-design, superpowers, code-review, typescript-lsp ]" && ( codex plugin marketplace upgrade claude-plugins-official || codex plugin marketplace add anthropics/claude-plugins-official ) && codex plugin add frontend-design@claude-plugins-official && codex plugin add superpowers@claude-plugins-official && codex plugin add code-review@claude-plugins-official && codex plugin add typescript-lsp@claude-plugins-official # buildkit |
| RUN /bin/bash -c mkdir -p "$HOME/.claude/skills" && curl -sL "https://github.com/anthropics/skills/archive/refs/heads/main.tar.gz" -o /tmp/anthropic-skills.tar.gz && tar -xzf /tmp/anthropic-skills.tar.gz -C "$HOME/.claude/skills" --strip-components=2 skills-main/skills/mcp-builder skills-main/skills/web-artifacts-builder && rm -f /tmp/anthropic-skills.tar.gz # buildkit |
| RUN /bin/bash -c bash -c "source $NVM_DIR/nvm.sh && npx --yes impeccable@latest install --providers=codex --scope=global --yes --no-hooks" # buildkit |
| USER root |
| RUN /bin/bash -c cp "/home/coder/.local/bin/claude" /usr/local/bin/claude && chmod +x /usr/local/bin/claude && /usr/local/bin/claude --version # buildkit |
| RUN /bin/bash -c cp "/home/coder/.local/bin/uv" /usr/local/bin/uv && cp "/home/coder/.local/bin/uvx" /usr/local/bin/uvx && chmod +x /usr/local/bin/uv /usr/local/bin/uvx && /usr/local/bin/uv --version # buildkit |
| RUN /bin/bash -c bash -c "source $NVM_DIR/nvm.sh && npm install -g bash-language-server typescript-language-server typescript" # buildkit |
| ENV PLAYWRIGHT_BROWSERS_PATH=/opt/ms-playwright |
| RUN /bin/bash -c bash -c "source $NVM_DIR/nvm.sh && npm install -g @playwright/mcp && PW_CORE_CLI=\$(find \$NVM_DIR/versions/node/active/lib/node_modules/@playwright/mcp -path '*playwright-core/cli.js' | head -1) && node \"\$PW_CORE_CLI\" install-deps chromium && node \"\$PW_CORE_CLI\" install chromium" && chmod -R a+rX /opt/ms-playwright # buildkit |
| ENV PUPPETEER_CACHE_DIR=/opt/puppeteer-cache |
| RUN /bin/bash -c bash -c "source $NVM_DIR/nvm.sh && npm install -g chrome-devtools-mcp && npx --yes puppeteer browsers install chrome --path /opt/puppeteer-cache" && chmod -R a+rX /opt/puppeteer-cache # buildkit |
| RUN /bin/bash -c bash -c "source $NVM_DIR/nvm.sh && npm install -g mcp-telegram" # buildkit |
| ENV UV_TOOL_DIR=/opt/uv-tools UV_TOOL_BIN_DIR=/opt/uv-tools/bin |
| ENV PATH=/opt/uv-tools/bin:/usr/local/nvm/versions/node/active/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| RUN /bin/bash -c uv tool install minimax-mcp --with "mcp<2" && uv tool install minimax-coding-plan-mcp --with "mcp<2" && chmod -R a+rX /opt/uv-tools # buildkit |
| ENV DOKKU_HOST=dokku |
| COPY ./dokku-cli.sh /usr/local/bin/dokku # buildkit |
| RUN /bin/bash -c chmod +x /usr/local/bin/dokku # buildkit |
| COPY ./kilo/acp-bridge-listen.sh /usr/local/bin/acp-bridge-listen.sh # buildkit |
| COPY ./kilo/acp-bridge-auth.py /usr/local/bin/acp-bridge-auth.py # buildkit |
| COPY ./kilo/peer-mcp-bridge.py /usr/local/bin/peer-mcp-bridge.py # buildkit |
| RUN /bin/bash -c chmod +x /usr/local/bin/acp-bridge-listen.sh /usr/local/bin/acp-bridge-auth.py /usr/local/bin/peer-mcp-bridge.py # buildkit |
| COPY ./claude/claude-peer-listen.sh /usr/local/bin/claude-peer-listen.sh # buildkit |
| COPY ./claude/claude-peer-runner.py /usr/local/bin/claude-peer-runner.py # buildkit |
| COPY ./claude/peer-mcp-bridge-claude.py /usr/local/bin/peer-mcp-bridge-claude.py # buildkit |
| RUN /bin/bash -c chmod +x /usr/local/bin/claude-peer-listen.sh /usr/local/bin/claude-peer-runner.py /usr/local/bin/peer-mcp-bridge-claude.py # buildkit |
| COPY ./codex/codex-peer-listen.sh /usr/local/bin/codex-peer-listen.sh # buildkit |
| COPY ./codex/peer-mcp-bridge-codex.py /usr/local/bin/peer-mcp-bridge-codex.py # buildkit |
| RUN /bin/bash -c chmod +x /usr/local/bin/codex-peer-listen.sh /usr/local/bin/peer-mcp-bridge-codex.py # buildkit |
| USER coder |
| USER root |
| RUN /bin/bash -c DEBIAN_FRONTEND=noninteractive apt-get update -y -qqq && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends -qqq libpq-dev libffi-dev zlib1g-dev libedit-dev libyaml-dev redis-server libicu-dev postgresql-client psmisc # buildkit |
| USER coder |
| RUN /bin/bash -c echo "[ Installing .NET SDK via dotnet-install.sh (jincod/dotnetcore-buildpack approach) ]" && sudo DEBIAN_FRONTEND=noninteractive apt-get update -y -qqq && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends -qqq libicu-dev libssl-dev curl && DOTNET_INSTALL_DIR="$HOME/.dotnet" && mkdir -p "$DOTNET_INSTALL_DIR" && curl -fsSL https://dot.net/v1/dotnet-install.sh -o /tmp/dotnet-install.sh && chmod +x /tmp/dotnet-install.sh && /tmp/dotnet-install.sh --channel LTS --install-dir "$DOTNET_INSTALL_DIR" && "$DOTNET_INSTALL_DIR/dotnet" tool install --global dotnet-ef && "$DOTNET_INSTALL_DIR/dotnet" --version # buildkit |
| USER root |
| RUN /bin/bash -c mkdir -p /usr/local/dotnet && cp -a /home/coder/.dotnet/. /usr/local/dotnet/ && chown -R coder:coder /usr/local/dotnet # buildkit |
| ENV DOTNET_ROOT=/usr/local/dotnet |
| ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 |
| ENV DOTNET_CLI_TELEMETRY_OPTOUT=1 |
| ENV NUGET_XMLDOC_MODE=skip |
| ENV PATH=/usr/local/dotnet:/usr/local/dotnet/tools:/opt/uv-tools/bin:/usr/local/nvm/versions/node/active/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| USER coder |
| RUN /bin/bash -c dotnet --version # buildkit |
| RUN /bin/bash -c dotnet tool install --tool-path /usr/local/dotnet/tools csharp-ls && "$HOME/.local/bin/claude" plugin install csharp-lsp@claude-plugins-official && codex plugin add csharp-lsp@claude-plugins-official # buildkit |
| RUN /bin/bash -c echo "[ Installing Heroku CLI ]" && curl https://cli-assets.heroku.com/install.sh | sh # buildkit |
| RUN /bin/bash -c echo ".NET ready: $(dotnet --version)" # buildkit |
Labels
| Key | Value |
|---|---|
| com.docker.compose.project | coder |
| com.docker.compose.service | devbox-dotnet |
| com.docker.compose.version | 5.3.0 |
| org.opencontainers.image.version | 24.04 |