fix(devcontainer): Dockerfile build fails when .dockerignore excludes .git/ #1234

Merged
brent.edwards merged 1 commits from bugfix/m3-dockerfile-git-clean into master 2026-03-31 21:14:46 +00:00
+82 -82
View File
1
@@ -25,36 +25,36 @@ RUN sudo apt-get update && \
sudo apt-get upgrade -y --no-install-recommends && \
sudo apt-get dist-upgrade -y --no-install-recommends && \
sudo apt-get install -y --no-install-recommends \
# Essential build tools
build-essential \
libportaudio2 \
iproute2 \
gcc \
g++ \
make \
# Development utilities
curl \
wget \
git \
vim \
nano \
jq \
gawk \
pandoc \
tree \
htop \
unzip \
ca-certificates \
# Shell enhancements
zsh \
# Networking tools
net-tools \
iputils-ping \
# Process management
procps \
# For MCP servers
gnupg \
lsb-release && \
# Essential build tools
build-essential \
libportaudio2 \
iproute2 \
gcc \
g++ \
make \
# Development utilities
curl \
wget \
git \
vim \
nano \
jq \
gawk \
pandoc \
tree \
htop \
unzip \
ca-certificates \
# Shell enhancements
zsh \
# Networking tools
net-tools \
iputils-ping \
# Process management
procps \
# For MCP servers
gnupg \
lsb-release && \
# Install Node.js 20 (required for many MCP servers)
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list && \
@@ -80,56 +80,56 @@ RUN sudo npm install -g @anthropic-ai/claude-code
# Install development tools globally
RUN sudo pip install --no-cache-dir \
"ruff>=0.4.0" \
"pyright>=1.1.400" \
"pre-commit>=3.8.0" \
"commitizen>=4.4.0" \
"nox>=2025.4.22" \
"uv-mcp" \
"uv>=0.8.0" \
"dev-kit-mcp-server" \
"mkdocs>=1.6.1" \
"mike>=2.0.0" \
"mkdocs-material>=9.6.0" \
"mkdocs-behave>=1.0.0" \
"mkdocstrings>=0.30.0" \
"mkdocstrings-python>=1.18.2" \
"pymdown-extensions>=10.16.1" \
"psutil>=7.1.0" \
"torch>=2.0.0" \
"transformers>=4.30.0" \
"tokenizers>=0.15.0" \
"hypothesis>=6.136.6" \
"aiofiles>=24.1.0" \
"pyhamcrest>=2.1.0" \
"numpy>=2.3.3" \
"huggingface-hub>=0.35.1" \
"mkdocs-kroki-plugin>=0.9.0" \
"torch>=2.0.0" \
"transformers>=4.30.0" \
"tokenizers>=0.15.0" \
"torch-geometric>=2.7.0" \
"rdflib>=7.1.4" \
"asv>=0.6.5"
"ruff>=0.4.0" \
"pyright>=1.1.400" \
"pre-commit>=3.8.0" \
"commitizen>=4.4.0" \
"nox>=2025.4.22" \
"uv-mcp" \
"uv>=0.8.0" \
"dev-kit-mcp-server" \
"mkdocs>=1.6.1" \
"mike>=2.0.0" \
"mkdocs-material>=9.6.0" \
"mkdocs-behave>=1.0.0" \
"mkdocstrings>=0.30.0" \
"mkdocstrings-python>=1.18.2" \
"pymdown-extensions>=10.16.1" \
"psutil>=7.1.0" \
"torch>=2.0.0" \
"transformers>=4.30.0" \
"tokenizers>=0.15.0" \
"hypothesis>=6.136.6" \
"aiofiles>=24.1.0" \
"pyhamcrest>=2.1.0" \
"numpy>=2.3.3" \
"huggingface-hub>=0.35.1" \
"mkdocs-kroki-plugin>=0.9.0" \
"torch>=2.0.0" \
"transformers>=4.30.0" \
"tokenizers>=0.15.0" \
"torch-geometric>=2.7.0" \
"rdflib>=7.1.4" \
"asv>=0.6.5"
# Install MCP servers globally (npm-based)
RUN sudo npm install -g \
@crunchloop/mcp-devcontainers \
kubernetes-mcp-server \
@opentofu/opentofu-mcp-server \
@modelcontextprotocol/server-filesystem \
@modelcontextprotocol/server-memory \
@modelcontextprotocol/server-sequential-thinking \
@modelcontextprotocol/server-postgres \
@treedy/pyright-mcp \
mcp-server-docker \
@cucumber/language-server && \
@crunchloop/mcp-devcontainers \
kubernetes-mcp-server \
@opentofu/opentofu-mcp-server \
@modelcontextprotocol/server-filesystem \
@modelcontextprotocol/server-memory \
@modelcontextprotocol/server-sequential-thinking \
@modelcontextprotocol/server-postgres \
@treedy/pyright-mcp \
mcp-server-docker \
@cucumber/language-server && \
# Install MCP servers (pip-based: fetch, git, sqlite) + LSP + security tools
sudo pip install --no-cache-dir \
robotframework-lsp \
mcp-server-fetch \
mcp-server-git \
mcp-server-sqlite \
semgrep
robotframework-lsp \
mcp-server-fetch \
mcp-server-git \
mcp-server-sqlite \
semgrep
# Create directories for MCP server configurations and logs
RUN mkdir -p ~/.config/claude-code \
@@ -215,10 +215,10 @@ RUN sudo pip install python-lsp-server[all]
# Install additional LSP servers
RUN sudo npm install -g \
yaml-language-server \
vscode-json-languageserver \
dockerfile-language-server-nodejs \
bash-language-server
yaml-language-server \
vscode-json-languageserver \
dockerfile-language-server-nodejs \
bash-language-server
ENV FORGEJO_URL="https://git.cleverthis.com/"
COPY .devcontainer/crush.json ${USER_HOME}/.config/crush/crush.json
@@ -231,8 +231,8 @@ WORKDIR $APP_DIR
RUN sudo chown -R ${USER_UID}:${USER_GID} "$APP_DIR" && \
cd $APP_DIR && \
git config --global --add safe.directory /app && \
git clean -xdf && \
rm -rf .git && \
# Clean and remove .git only if it was copied (not excluded by .dockerignore)
([ -d .git ] && git clean -xdf && rm -rf .git || true) && \
# So git doesn't complain about unusual permissions
sudo git config --system --add safe.directory ${APP_DIR}