-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.dev
More file actions
61 lines (54 loc) · 2.37 KB
/
Copy pathDockerfile.dev
File metadata and controls
61 lines (54 loc) · 2.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# Better Agent Engine (BAE) — local development toolchain image.
#
# One image with every toolchain needed to build, test, and lint all five
# components (server, baectl, client-rust, client-typescript, client-python).
# Build it with `make dev-image`; the root Makefile runs all component
# targets inside a container of this image with the repo mounted at
# /workspace. Also serves as the base image for .awman/Dockerfile.claude.
FROM debian:bookworm-slim
ENV DEBIAN_FRONTEND=noninteractive
# System packages required for building, testing, and running this project.
RUN apt-get update && apt-get install -y --no-install-recommends \
git \
ca-certificates \
curl \
make \
build-essential \
musl-tools \
pkg-config \
libssl-dev \
sqlite3 \
libsqlite3-dev \
python3 \
python3-venv \
&& rm -rf /var/lib/apt/lists/*
# Rust toolchain (server, client-rust). Installed system-wide (not under a
# user HOME) so the image works for any container user; world-writable so
# non-root users can update caches and components.
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH
RUN curl -fsSL --retry 5 https://sh.rustup.rs | sh -s -- -y \
--default-toolchain stable --profile default --no-modify-path \
&& rustc --version && cargo --version && cargo clippy --version && cargo fmt --version \
&& rustup target add x86_64-unknown-linux-musl \
&& chmod -R a+w "$RUSTUP_HOME" "$CARGO_HOME"
# Node.js 22 LTS (client-typescript).
RUN curl -fsSL --retry 5 https://deb.nodesource.com/setup_22.x | bash - \
&& apt-get install -y --no-install-recommends nodejs \
&& rm -rf /var/lib/apt/lists/* \
&& node --version && npm --version
# uv (client-python): package/venv manager; also provisions Python versions.
RUN curl -fsSL --retry 5 https://astral.sh/uv/install.sh \
| env UV_INSTALL_DIR=/usr/local/bin sh \
&& uv --version
# Copy instead of hardlinking into venvs: the workspace is a bind mount on a
# different filesystem than uv's cache.
ENV UV_LINK_MODE=copy
# Default log filter for the dev loop: the full server event stream at TRACE
# (HTTP requests, session events with complete payloads), dependencies at INFO —
# global TRACE would bury baesrv logs under hyper/tokio internals. Override per
# run with -e BAE_LOG=… .
ENV BAE_LOG=baesrv=trace,info
WORKDIR /workspace
CMD ["bash"]