# Dockerfile FROM python:3.11-slim # Ajouter le dépôt Debian Testing pour les paquets plus récents RUN echo "deb http://deb.debian.org/debian testing main" \ > /etc/apt/sources.list.d/testing.list # Création d'un utilisateur programmeur avec UID 1000 et home dans /home/programmer RUN useradd -u 1000 -m -d /home/programmer -s /bin/bash programmer WORKDIR /app # Installer les outils de développement Go et Rust RUN apt-get update && \ apt-get install -y \ clang \ llvm-dev \ libclang-dev \ pkg-config \ build-essential \ git \ make \ curl \ nodejs \ npm \ pylint \ black \ flake8 \ mypy \ isort \ logrotate COPY tools tools # Installer la dernière version de Go RUN bash tools/install_latest_go.sh ENV PATH=/usr/local/go/bin:$PATH # Installer la dernière version de Rust 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 # Installer la dernière version de typscript RUN npm install -g typescript tsc @types/node eslint prettier RUN cargo binstall --strategies crate-meta-data jj-cli # Installer le SDK MCP Python RUN pip install --no-cache-dir ruff fastmcp ipython RUN curl -fsSL https://opencode.ai/install | bash \ && mv /root/.opencode/bin/opencode /usr/local/bin/ # Copier le serveur COPY src . # Copier le script de démarrage COPY docker_startup.sh . COPY opencode.json ~/.config/opencode # Exposer le port EXPOSE 7860 ENV OLLAMA_ADDR="http://host.docker.internal:11434" # Rendre le script exécutable et lancer le serveur RUN chmod +x docker_startup.sh RUN mkdir /sandbox /log \ && chown programmer:programmer /sandbox /log # Création de la configuration logrotate COPY logrotate-config /etc/logrotate.d/mcp-logs # Changer l'utilisateur pour programmeur USER programmer RUN mkdir -p /home/programmer/.config/opencode COPY opencode.json /home/programmer/.config/opencode CMD ["./docker_startup.sh"]