Files
PMOCrazycoder/Dockerfile
Eric Coissac 9c914b989b Enhance Docker setup with new tools and configurations
Update Dockerfile to install additional tools (orla, rust-analyzer), configure user permissions, and set up bash completion.

Update docker-entrypoint.sh to export new environment variables and configure MCP language servers for multiple languages (Go, Python, Rust, TypeScript) with proper workspace and LSP settings.

Add new documentation file AGENTS.md with development guidelines and security rules.

Add pyproject.toml for Python project configuration with dependencies and dev tools.

Add src/PMOCrazyCoder.py as a new MCP server implementation with example tools.
2026-02-21 23:04:23 +01:00

74 lines
2.6 KiB
Docker

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y \
clang clangd llvm-dev libclang-dev pkg-config build-essential git make curl nodejs npm \
pylint black flake8 mypy isort logrotate sudo cmake libicu-dev zlib1g-dev \
libcurl4-openssl-dev libssl-dev ruby-dev jq python3 python3-pip golang-go rustc cargo \
r-base sqlite3 wget bash zsh libgit2-dev \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
RUN echo "deb http://deb.debian.org/debian testing main" > /etc/apt/sources.list.d/testing.list
COPY tools/install_latest_go.sh /tmp/install_latest_go.sh
RUN bash /tmp/install_latest_go.sh && \
echo "PATH=/usr/local/go/bin:$PATH" >> /root/.bashrc
ENV PATH=/usr/local/go/bin:$PATH
ENV RUSTUP_HOME=/usr/local/rustup
ENV CARGO_HOME=/usr/local/cargo
ENV PATH=/usr/local/cargo/bin:$PATH
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable && \
rustup install nightly && \
rustup component add rustfmt clippy rust-src rust-docs && \
cargo install cargo-edit cargo-watch cargo-outdated cargo-make cargo-binstall
RUN npm install -g typescript tsc @types/node eslint prettier pyright typescript-language-server
RUN cargo binstall --strategies crate-meta-data jj-cli
RUN cargo install --git https://github.com/nilskch/jj-lsp.git
RUN gem install github-linguist
RUN pip install --no-cache-dir --break-system-packages ruff fastmcp ipython
RUN curl -fsSL https://opencode.ai/install | bash && \
mkdir -p /root/.config/opencode && \
mv /root/.opencode/bin/opencode /usr/local/bin/
ENV GOPATH=/usr/local/go
ENV GOBIN=/usr/local/go/bin
RUN go install golang.org/x/tools/gopls@latest \
&& go install github.com/isaacphi/mcp-language-server@latest \
&& go install github.com/dorcha-inc/orla/cmd/orla@latest
RUN mkdir -p /etc/bash_completion.d \
&& orla completion bash > /etc/bash_completion.d/orla \
&& jj util completion bash > /etc/bash_completion.d/jj
RUN rustup component add rust-analyzer --toolchain nightly
ARG USERNAME=devuser
ARG USER_UID=1000
ARG USER_GID=1000
RUN groupadd --gid $USER_GID $USERNAME && \
useradd --uid $USER_UID \
--gid $USER_GID \
-m $USERNAME \
--shell /bin/bash && \
echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/$USERNAME && \
chmod 440 /etc/sudoers.d/$USERNAME
COPY docker-entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
RUN mkdir -p /home/${USERNAME}/.config \
&& chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}/.config
COPY --chown=${USERNAME}:${USERNAME} opencode /home/${USERNAME}/.config/opencode
USER $USERNAME
WORKDIR /workspace
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["/bin/bash"]