Dockerfile 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # docker build -f Dockerfile.base -t roo-code-benchmark-base ..
  2. # docker build -f Dockerfile -t roo-code-benchmark ..
  3. # docker run -d -it -p 3000:3000 -v /tmp/benchmarks.db:/tmp/benchmarks.db roo-code-benchmark
  4. # docker exec -it $(docker ps --filter "ancestor=roo-code-benchmark" -q) /bin/bash
  5. FROM ubuntu:latest
  6. # Install dependencies
  7. RUN apt update && apt install -y sudo curl git vim jq
  8. # Create a `vscode` user
  9. RUN useradd -m vscode -s /bin/bash && \
  10. echo "vscode ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/vscode && \
  11. chmod 0440 /etc/sudoers.d/vscode
  12. # Install VS Code
  13. # https://code.visualstudio.com/docs/setup/linux
  14. RUN apt install -y wget gpg apt-transport-https
  15. RUN wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
  16. RUN install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
  17. 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
  18. RUN rm -f packages.microsoft.gpg
  19. RUN apt update && apt install -y code
  20. # Install Xvfb
  21. RUN apt install -y xvfb
  22. # [cpp] Install cmake 3.28.3
  23. RUN apt install -y cmake
  24. # [go] Install Go 1.22.2
  25. RUN apt install -y golang-go
  26. # [java] Install Java 21
  27. RUN apt install -y default-jre
  28. # [javascript] Install Node.js v18.20.6
  29. RUN curl -sL https://deb.nodesource.com/setup_18.x | bash -
  30. RUN apt update && apt install -y nodejs
  31. RUN npm install -g corepack@latest
  32. # [python] Install Python 3.12.3 and uv 0.6.6
  33. RUN apt install -y python3 python3-venv python3-dev python3-pip
  34. # [rust] Install Rust 1.85
  35. RUN curl https://sh.rustup.rs -sSf | bash -s -- -y
  36. RUN echo 'source $HOME/.cargo/env' >> $HOME/.bashrc
  37. WORKDIR /home/vscode
  38. USER vscode
  39. # Enable corepack and install pnpm for the vscode user
  40. RUN corepack enable
  41. RUN yes y | pnpm --version
  42. COPY benchmark/entrypoint.sh /usr/local/bin/entrypoint.sh
  43. # Copy and build dependencies
  44. COPY --chown=vscode:vscode package*.json /home/vscode/repo/
  45. COPY --chown=vscode:vscode webview-ui/package*.json /home/vscode/repo/webview-ui/
  46. COPY --chown=vscode:vscode e2e/package*.json /home/vscode/repo/e2e/
  47. COPY --chown=vscode:vscode benchmark/package*.json /home/vscode/repo/benchmark/
  48. WORKDIR /home/vscode/repo
  49. RUN npm run install:all
  50. # Copy and build benchmark runner
  51. COPY --chown=vscode:vscode . /home/vscode/repo
  52. WORKDIR /home/vscode/repo/benchmark
  53. RUN npm run build
  54. # Copy exercises
  55. WORKDIR /home/vscode
  56. RUN git clone https://github.com/cte/Roo-Code-Benchmark.git exercises
  57. # Prepare exercises
  58. WORKDIR /home/vscode/exercises/python
  59. RUN curl -LsSf https://astral.sh/uv/install.sh | sh
  60. RUN /home/vscode/.local/bin/uv sync
  61. # Build web-ui
  62. WORKDIR /home/vscode/exercises/web-ui
  63. RUN echo "DB_FILE_NAME=file:/tmp/benchmarks.db" > .env
  64. RUN pnpm install
  65. RUN npx drizzle-kit push
  66. # Run web-ui
  67. EXPOSE 3000
  68. ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
  69. CMD ["/usr/bin/pnpm", "dev"]