| FROM ubuntu:22.04 |
|
|
| LABEL description="AI Coding Workspace · code-server + Continue + OpenCode + Aider + omp" |
|
|
| ENV DEBIAN_FRONTEND=noninteractive |
| ENV HOME=/root |
| ENV SHELL=/bin/bash |
| ENV LANG=en_US.UTF-8 |
| ENV LC_ALL=en_US.UTF-8 |
|
|
| RUN apt-get update && apt-get install -y --no-install-recommends \ |
| curl wget git git-lfs \ |
| vim nano htop \ |
| python3 python3-pip python3-venv python3-dev \ |
| build-essential pkg-config cmake \ |
| sudo locales jq unzip zip tar gzip xz-utils bzip2 \ |
| ca-certificates gnupg openssh-client ripgrep procps iproute2 \ |
| && locale-gen en_US.UTF-8 \ |
| && rm -rf /var/lib/apt/lists/* |
|
|
| RUN curl -fsSL "https://go.dev/dl/go1.22.5.linux-amd64.tar.gz" -o /tmp/go.tar.gz \ |
| && tar -C /usr/local -xzf /tmp/go.tar.gz \ |
| && rm /tmp/go.tar.gz |
| ENV PATH=$PATH:/usr/local/go/bin |
|
|
| RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y |
| ENV PATH=$PATH:/root/.cargo/bin |
|
|
| RUN curl -fsSL "https://nodejs.org/dist/v20.19.0/node-v20.19.0-linux-x64.tar.xz" \ |
| -o /tmp/node.tar.xz \ |
| && tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1 \ |
| && rm /tmp/node.tar.xz \ |
| && npm install -g yarn pnpm |
| ENV PATH=$PATH:/root/.local/share/pnpm:/root/.npm-global/bin |
|
|
| RUN curl -fsSL https://astral.sh/uv/install.sh | sh |
| ENV PATH=$PATH:/root/.local/bin |
|
|
| RUN curl -fsSL https://code-server.dev/install.sh | sh \ |
| && rm -rf /tmp/code-server* |
|
|
| RUN curl -fsSL "https://github.com/caddyserver/caddy/releases/download/v2.8.4/caddy_2.8.4_linux_amd64.tar.gz" \ |
| -o /tmp/caddy.tar.gz \ |
| && tar -xzf /tmp/caddy.tar.gz -C /usr/local caddy \ |
| && rm /tmp/caddy.tar.gz |
|
|
| RUN pip3 install --no-cache-dir \ |
| ipykernel requests httpx \ |
| numpy pandas black isort pylint \ |
| huggingface_hub \ |
| aider-chat |
|
|
| RUN npm install -g @opencode-ai/opencode |
|
|
| RUN curl -fsSL https://bun.sh/install | bash |
| ENV PATH=$PATH:/root/.bun/bin |
|
|
| RUN curl -fsSL https://omp.sh/install | sh |
|
|
| RUN code-server --install-extension ms-python.python \ |
| && code-server --install-extension ms-python.vscode-pylance \ |
| && code-server --install-extension ms-toolsai.jupyter \ |
| && code-server --install-extension ms-toolsai.jupyter-keymap \ |
| && code-server --install-extension ms-toolsai.vscode-jupyter-cell-tags \ |
| && code-server --install-extension ms-toolsai.vscode-jupyter-slideshow \ |
| && code-server --install-extension esbenp.prettier-vscode \ |
| && code-server --install-extension eamodio.gitlens \ |
| && code-server --install-extension mhutchie.git-graph \ |
| && code-server --install-extension PKief.material-icon-theme \ |
| && code-server --install-extension formulahendry.code-runner \ |
| && code-server --install-extension christian-kohler.path-intellisense \ |
| && code-server --install-extension dbaeumer.vscode-eslint \ |
| && code-server --install-extension redhat.vscode-yaml \ |
| && code-server --install-extension redhat.vscode-xml \ |
| && code-server --install-extension tamasfe.even-better-toml \ |
| && code-server --install-extension davidanson.vscode-markdownlint \ |
| && code-server --install-extension golang.go \ |
| && code-server --install-extension rust-lang.rust-analyzer \ |
| && code-server --install-extension gruntfuggly.todo-tree \ |
| && code-server --install-extension donjayamanne.githistory \ |
| && code-server --install-extension mechatroner.rainbow-csv \ |
| && code-server --install-extension wayou.vscode-todo-highlight \ |
| && code-server --install-extension aaron-bond.better-comments \ |
| && code-server --install-extension njpwerner.autodocstring \ |
| && code-server --install-extension codezombiech.gitignore \ |
| && code-server --install-extension github.vscode-github-actions \ |
| && code-server --install-extension jeff-hykin.better-dockerfile-syntax \ |
| && code-server --install-extension timonwong.shellcheck \ |
| && code-server --install-extension yzhang.markdown-all-in-one \ |
| && code-server --install-extension continue.continue |
|
|
| COPY Caddyfile /etc/caddy/Caddyfile |
| COPY port-manager.js /port-manager.js |
| COPY start.sh /start.sh |
| RUN chmod +x /start.sh |
|
|
| WORKDIR /root |
| EXPOSE 7860 |
| CMD ["/start.sh"] |
|
|