49 lines
1.9 KiB
Docker
49 lines
1.9 KiB
Docker
FROM node:24.12.0-bookworm
|
|
ARG TOOLKIT_BUILD_ID=dev
|
|
|
|
# System deps
|
|
RUN apt-get update && apt-get install -y \
|
|
git \
|
|
python3 \
|
|
python3-pip \
|
|
python3-venv \
|
|
sqlite3 \
|
|
curl \
|
|
zip \
|
|
unzip \
|
|
ca-certificates \
|
|
gnupg \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Docker CE CLI + compose plugin (not docker.io from apt which lacks compose)
|
|
RUN install -m 0755 -d /etc/apt/keyrings \
|
|
&& curl -fsSL https://download.docker.com/linux/debian/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/debian bookworm stable" > /etc/apt/sources.list.d/docker.list \
|
|
&& apt-get update \
|
|
&& apt-get install -y docker-ce-cli docker-compose-plugin \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Pin npm so lockfiles do not churn between this container and any host
|
|
# install. node:24.12.0-bookworm bundles an older npm; overwrite it.
|
|
RUN npm install -g npm@11.12.1
|
|
|
|
# Install uv and harbor
|
|
RUN pip3 install --break-system-packages uv && uv tool install harbor==0.20.0
|
|
|
|
# Pin harbor to the local docker backend — the only backend this container is
|
|
# provisioned for (docker CLI + host docker socket, configured above). The
|
|
# bundled scripts/harbor-run otherwise defaults to a cloud sandbox backend that
|
|
# needs an API key this container doesn't ship, and exits 1 before running.
|
|
# NOTE: devcontainer.json also sets HARBOR_ENV=docker via containerEnv — keep
|
|
# BOTH. containerEnv survives a stale image (workers who upgrade the toolkit
|
|
# files without rebuilding still get docker), while this ENV covers running the
|
|
# image directly with `docker run` outside the devcontainer tooling. Removing
|
|
# either as a "duplicate" reintroduces the daytona-default error.
|
|
ENV HARBOR_ENV=docker
|
|
|
|
# Make uv tools and Claude Code available
|
|
ENV PATH="/root/.local/bin:${PATH}"
|
|
|
|
WORKDIR /workspace
|