Dockerfile 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. FROM node:20-slim AS base
  2. ENV PNPM_HOME="/pnpm"
  3. ENV PATH="$PNPM_HOME:$PATH"
  4. RUN corepack enable
  5. RUN npm install -g npm@latest
  6. RUN npm install -g npm-run-all
  7. # Install dependencies
  8. RUN apt update && apt install -y sudo curl git vim jq
  9. # Create a `vscode` user
  10. RUN useradd -m vscode -s /bin/bash && \
  11. echo "vscode ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/vscode && \
  12. chmod 0440 /etc/sudoers.d/vscode
  13. # Install VS Code
  14. # https://code.visualstudio.com/docs/setup/linux
  15. RUN apt install -y wget gpg apt-transport-https
  16. RUN wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
  17. RUN install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
  18. RUN echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | tee /etc/apt/sources.list.d/vscode.list > /dev/null
  19. RUN rm -f packages.microsoft.gpg
  20. RUN apt update && apt install -y code
  21. # Install Xvfb
  22. RUN apt install -y xvfb
  23. # [cpp] Install cmake 3.28.3
  24. RUN apt install -y cmake
  25. # [go] Install Go 1.22.2
  26. RUN apt install -y golang-go
  27. # [java] Install Java 21
  28. RUN apt install -y default-jre
  29. # [python] Install Python 3.12.3 and uv 0.6.6
  30. RUN apt install -y python3 python3-venv python3-dev python3-pip
  31. # [rust] Install Rust 1.85
  32. RUN curl https://sh.rustup.rs -sSf | bash -s -- -y
  33. RUN echo 'source $HOME/.cargo/env' >> $HOME/.bashrc
  34. WORKDIR /home/vscode
  35. USER vscode
  36. # Copy evals
  37. RUN git clone https://github.com/RooCodeInc/Roo-Code-Evals.git evals
  38. # Prepare evals
  39. WORKDIR /home/vscode/evals/python
  40. RUN curl -LsSf https://astral.sh/uv/install.sh | sh
  41. RUN /home/vscode/.local/bin/uv sync
  42. WORKDIR /home/vscode/repo/benchmark
  43. # Install dependencies
  44. COPY --chown=vscode:vscode ./evals/package.json ./evals/pnpm-lock.yaml ./evals/pnpm-workspace.yaml ./evals/.npmrc ./
  45. RUN mkdir -p apps/cli apps/web \
  46. config/eslint config/typescript \
  47. packages/db packages/ipc packages/lib packages/types
  48. COPY --chown=vscode:vscode ./evals/apps/cli/package.json ./apps/cli/
  49. COPY --chown=vscode:vscode ./evals/apps/web/package.json ./apps/web/
  50. COPY --chown=vscode:vscode ./evals/config/eslint/package.json ./config/eslint/
  51. COPY --chown=vscode:vscode ./evals/config/typescript/package.json ./config/typescript/
  52. COPY --chown=vscode:vscode ./evals/packages/db/package.json ./packages/db/
  53. COPY --chown=vscode:vscode ./evals/packages/ipc/package.json ./packages/ipc/
  54. COPY --chown=vscode:vscode ./evals/packages/lib/package.json ./packages/lib/
  55. COPY --chown=vscode:vscode ./evals/packages/types/package.json ./packages/types/
  56. RUN pnpm install
  57. # Copy & install extension
  58. COPY --chown=vscode:vscode ./bin/roo-code-latest.vsix ./
  59. RUN code --debug --install-extension ./roo-code-latest.vsix
  60. # Copy application code
  61. COPY --chown=vscode:vscode ./evals ./
  62. # Copy environment variables
  63. COPY --chown=vscode:vscode ./evals/.env ./
  64. # Push database schema
  65. RUN pnpm --filter @evals/db db:push
  66. EXPOSE 3000
  67. CMD ["pnpm", "web"]