|
|
|
|
|
|
|
FROM ubuntu:22.04 AS dind
|
|
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
ca-certificates \
|
|
curl \
|
|
&& install -m 0755 -d /etc/apt/keyrings \
|
|
&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc \
|
|
&& chmod a+r /etc/apt/keyrings/docker.asc \
|
|
&& echo \
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
|
|
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
docker-ce \
|
|
docker-ce-cli \
|
|
containerd.io \
|
|
docker-buildx-plugin \
|
|
docker-compose-plugin \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean \
|
|
&& apt-get autoremove -y
|
|
|
|
|
|
FROM dind AS openhands
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
bash \
|
|
build-essential \
|
|
curl \
|
|
git \
|
|
git-lfs \
|
|
software-properties-common \
|
|
make \
|
|
netcat \
|
|
sudo \
|
|
wget \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean \
|
|
&& apt-get autoremove -y
|
|
|
|
|
|
RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
|
|
&& chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
|
|
&& echo "deb [arch=$(dpkg --print-architecture) 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 \
|
|
&& apt-get update && apt-get -y install \
|
|
gh \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean \
|
|
&& apt-get autoremove -y
|
|
|
|
|
|
RUN add-apt-repository ppa:deadsnakes/ppa \
|
|
&& apt-get update \
|
|
&& apt-get install -y python3.12 python3.12-venv python3.12-dev python3-pip \
|
|
&& ln -s /usr/bin/python3.12 /usr/bin/python
|
|
|
|
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \
|
|
&& apt-get install -y nodejs
|
|
|
|
|
|
RUN curl -fsSL https://install.python-poetry.org | python3.12 - \
|
|
&& ln -s ~/.local/bin/poetry /usr/local/bin/poetry
|
|
|
|
|
|
RUN <<EOF
|
|
#!/bin/bash
|
|
printf "#!/bin/bash
|
|
set +x
|
|
uname -a
|
|
docker --version
|
|
gh --version | head -n 1
|
|
git --version
|
|
#
|
|
python --version
|
|
echo node `node --version`
|
|
echo npm `npm --version`
|
|
poetry --version
|
|
netcat -h 2>&1 | head -n 1
|
|
" > /version.sh
|
|
chmod a+x /version.sh
|
|
EOF
|
|
|
|
|
|
FROM openhands AS dev
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
dnsutils \
|
|
file \
|
|
iproute2 \
|
|
jq \
|
|
lsof \
|
|
ripgrep \
|
|
silversearcher-ag \
|
|
vim \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean \
|
|
&& apt-get autoremove -y
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
RUN \
|
|
--mount=type=bind,source=./,target=/app/ \
|
|
<<EOF
|
|
#!/bin/bash
|
|
make -s clean
|
|
make -s check-dependencies
|
|
make -s install-python-dependencies
|
|
|
|
# NOTE
|
|
# node_modules are .dockerignore-d therefore not mountable
|
|
# make -s install-frontend-dependencies
|
|
EOF
|
|
|
|
|
|
CMD ["bash"]
|
|
|