Skip to content

Commit d18cf85

Browse files
authored
feat: add daytona support to scout (#85)
1 parent 96396c6 commit d18cf85

File tree

11 files changed

+1387
-180
lines changed

11 files changed

+1387
-180
lines changed

bun.lock

Lines changed: 298 additions & 87 deletions
Large diffs are not rendered by default.
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
FROM ubuntu:24.04
2+
3+
ENV LANG="C.UTF-8"
4+
5+
### MINIMAL BASE PACKAGES ###
6+
RUN apt-get update \
7+
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
8+
ca-certificates \
9+
curl \
10+
git \
11+
build-essential \
12+
unzip \
13+
xz-utils \
14+
sudo \
15+
gnupg \
16+
lsof \
17+
net-tools \
18+
&& rm -rf /var/lib/apt/lists/*
19+
20+
### DOCKER ENGINE ###
21+
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \
22+
&& echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu noble stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \
23+
&& apt-get update \
24+
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
25+
docker-ce \
26+
&& rm -rf /var/lib/apt/lists/*
27+
28+
### GITHUB CLI ###
29+
RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | gpg --dearmor -o /usr/share/keyrings/githubcli-archive-keyring.gpg \
30+
&& echo "deb [arch=amd64 signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
31+
&& apt-get update \
32+
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
33+
gh \
34+
&& rm -rf /var/lib/apt/lists/*
35+
36+
### CREATE BLINK USER ###
37+
RUN groupadd -r blink && useradd -r -g blink -m -s /bin/bash blink \
38+
&& echo 'blink ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \
39+
&& usermod -aG docker blink
40+
41+
### CREATE WORKSPACE DIRECTORY ###
42+
RUN mkdir -p /workspace && chown blink:blink /workspace
43+
44+
USER blink
45+
ENV HOME=/home/blink
46+
WORKDIR /workspace
47+
48+
### NODE VIA NVM ###
49+
ARG NODE_VERSION=22.13.0
50+
ENV NVM_DIR=/home/blink/.nvm
51+
ENV PATH=/home/blink/.local/bin:/home/blink/.local/bun/bin:$NVM_DIR/versions/node/v${NODE_VERSION}/bin:$PATH
52+
RUN mkdir -p $NVM_DIR \
53+
&& curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash \
54+
&& . $NVM_DIR/nvm.sh \
55+
&& nvm install $NODE_VERSION \
56+
&& nvm use $NODE_VERSION \
57+
&& nvm alias default $NODE_VERSION \
58+
&& npm install -g typescript prettier eslint pnpm yarn \
59+
&& echo 'export NVM_DIR="$HOME/.nvm"' >> /home/blink/.bashrc \
60+
&& echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> /home/blink/.bashrc \
61+
&& echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >> /home/blink/.bashrc
62+
63+
### BUN ###
64+
ARG BUN_VERSION=1.2.14
65+
RUN mkdir -p /home/blink/.local/bun/bin \
66+
&& curl -L "https://github.com/oven-sh/bun/releases/download/bun-v${BUN_VERSION}/bun-linux-x64-baseline.zip" \
67+
-o /tmp/bun.zip \
68+
&& unzip -q /tmp/bun.zip -d /tmp \
69+
&& mv /tmp/bun-linux-x64-baseline/bun /home/blink/.local/bun/bin/ \
70+
&& chmod +x /home/blink/.local/bun/bin/bun \
71+
&& rm -rf /tmp/bun.zip /tmp/bun-linux-x64-baseline
72+
73+
### PYTHON (system python + pip) ###
74+
USER root
75+
RUN apt-get update \
76+
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
77+
python3 \
78+
python3-pip \
79+
python3-venv \
80+
&& rm -rf /var/lib/apt/lists/*
81+
USER blink
82+
RUN python3 -m pip install --user --break-system-packages \
83+
black ruff mypy uv
84+
85+
### GO ###
86+
ARG GO_VERSION=1.23.8
87+
ENV PATH=/home/blink/.local/go/bin:/home/blink/go/bin:$PATH
88+
RUN mkdir -p /home/blink/.local \
89+
&& curl -L "https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" \
90+
| tar -xz -C /home/blink/.local \
91+
&& mv /home/blink/.local/go /home/blink/.local/go-tmp \
92+
&& mkdir -p /home/blink/.local/go \
93+
&& mv /home/blink/.local/go-tmp/* /home/blink/.local/go/ \
94+
&& rmdir /home/blink/.local/go-tmp
95+
96+
### RUST ###
97+
ENV PATH=/home/blink/.cargo/bin:$PATH
98+
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
99+
sh -s -- -y --profile minimal --no-modify-path
100+
101+
### RIPGREP (manual install) ###
102+
ARG RG_VERSION=14.1.1
103+
RUN curl -L "https://github.com/BurntSushi/ripgrep/releases/download/${RG_VERSION}/ripgrep-${RG_VERSION}-x86_64-unknown-linux-musl.tar.gz" \
104+
| tar -xz --strip-components=1 -C /tmp \
105+
&& mkdir -p /home/blink/.local/bin \
106+
&& mv /tmp/rg /home/blink/.local/bin/
107+
108+
### JQ (manual install) ###
109+
RUN curl -L "https://github.com/jqlang/jq/releases/download/jq-1.7.1/jq-linux-amd64" \
110+
-o /home/blink/.local/bin/jq \
111+
&& chmod +x /home/blink/.local/bin/jq
112+
113+
### SHELL SETUP ###
114+
RUN echo 'export PATH="$HOME/.local/bin:$HOME/.bun/bin:$HOME/.local/go/bin:$HOME/go/bin:$HOME/.cargo/bin:$PATH"' >> /home/blink/.bashrc
115+
116+
### GIT SETUP ###
117+
RUN git config --global core.pager "cat"
118+
119+
ENTRYPOINT ["/bin/bash", "-c", "echo 'Installing blink...'; bun install -g blink@latest; echo 'Blink installed successfully!'; /home/blink/.bun/bin/blink compute server"]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
The `Dockerfile` can be used to create a Scout compatible Docker image for the Daytona snapshot.

0 commit comments

Comments
 (0)