ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s

This commit is contained in:
2026-08-20 13:12:50 +00:00
commit b119135836
10275 changed files with 3284984 additions and 0 deletions
@@ -0,0 +1,34 @@
# Docker Setup for Browser-Use
This directory contains the optimized Docker build system for browser-use, achieving < 30 second builds.
## Quick Start
```bash
# Build base images (only needed once or when dependencies change)
./docker/build-base-images.sh
# Build browser-use
docker build -f Dockerfile.fast -t browseruse .
# Or use the standard Dockerfile (slower but self-contained)
docker build -t browseruse .
```
## Files
- `Dockerfile` - Standard self-contained build (~2 min)
- `Dockerfile.fast` - Fast build using pre-built base images (~30 sec)
- `docker/` - Base image definitions and build script
- `base-images/system/` - Python + minimal system deps
- `base-images/chromium/` - Adds Chromium browser
- `base-images/python-deps/` - Adds Python dependencies
- `build-base-images.sh` - Script to build all base images
## Performance
| Build Type | Time |
|------------|------|
| Standard Dockerfile | ~2 minutes |
| Fast build (with base images) | ~30 seconds |
| Rebuild after code change | ~16 seconds |
@@ -0,0 +1,15 @@
ARG BASE_TAG=latest
FROM browseruse/base-system:${BASE_TAG}
WORKDIR /tmp
COPY pyproject.toml ./
# Install chromium browser using temporary playwright installation
RUN --mount=type=cache,target=/root/.cache,sharing=locked \
echo "Installing chromium browser via temporary playwright..." && \
pip install --no-cache-dir playwright && \
PLAYWRIGHT_BROWSERS_PATH=/opt/playwright playwright install chromium --with-deps --no-shell && \
ln -s /opt/playwright/chromium-*/chrome-linux/chrome /usr/bin/chromium-browser && \
chmod -R 755 /opt/playwright && \
pip uninstall playwright -y && \
rm -f pyproject.toml
@@ -0,0 +1,11 @@
ARG BASE_TAG=latest
FROM browseruse/base-chromium:${BASE_TAG}
ENV PYTHONUNBUFFERED=1 PATH="/app/.venv/bin:$PATH" PLAYWRIGHT_BROWSERS_PATH=/opt/playwright
WORKDIR /app
COPY pyproject.toml uv.lock* ./
RUN --mount=type=cache,target=/root/.cache/uv,sharing=locked \
uv venv && \
uv sync --all-extras --no-dev --no-install-project --compile-bytecode
@@ -0,0 +1,10 @@
FROM python:3.12-slim
# Install minimal system dependencies
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
apt-get update && \
apt-get install -y --no-install-recommends ca-certificates curl wget && \
rm -rf /var/lib/apt/lists/*
# Install uv package manager
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
@@ -0,0 +1,58 @@
#!/bin/bash
# Build script for browser-use base images
set -euo pipefail
# Configuration
REGISTRY="${DOCKER_REGISTRY:-browseruse}"
PLATFORMS="${PLATFORMS:-linux/amd64}"
PUSH="${PUSH:-false}"
# Build function
build_image() {
local name=$1
local dockerfile=$2
local build_args="${3:-}"
echo "[INFO] Building ${name}..."
local build_cmd="docker build"
local tag_args="-t ${REGISTRY}/${name}:latest -t ${REGISTRY}/${name}:$(date +%Y%m%d)"
# Use buildx for multi-platform or push
if [[ "$PLATFORMS" == *","* ]] || [ "$PUSH" = "true" ]; then
build_cmd="docker buildx build --platform=$PLATFORMS"
[ "$PUSH" = "true" ] && build_cmd="$build_cmd --push" || build_cmd="$build_cmd"
fi
$build_cmd $tag_args $build_args -f $dockerfile ../../..
}
# Main
cd "$(dirname "$0")"
# Parse arguments
while [[ $# -gt 0 ]]; do
case $1 in
--push) PUSH=true; shift ;;
--registry) REGISTRY="$2"; shift 2 ;;
--platforms) PLATFORMS="$2"; shift 2 ;;
--help)
echo "Usage: $0 [--push] [--registry REG] [--platforms P]"
exit 0 ;;
*) echo "Unknown option: $1"; exit 1 ;;
esac
done
# Create buildx builder if needed
if [[ "$PLATFORMS" == *","* ]] || [ "$PUSH" = "true" ]; then
docker buildx inspect browseruse-builder >/dev/null 2>&1 || \
docker buildx create --name browseruse-builder --use
docker buildx use browseruse-builder
fi
# Build images in order
build_image "base-system" "base-images/system/Dockerfile"
build_image "base-chromium" "base-images/chromium/Dockerfile" "--build-arg BASE_TAG=latest"
build_image "base-python-deps" "base-images/python-deps/Dockerfile" "--build-arg BASE_TAG=latest"
echo "[INFO] Build complete. Use: FROM ${REGISTRY}/base-python-deps:latest"