INTEGRITY Документация

Справочник по Dockerfile

Настройте образ контейнера песочницы с помощью собственных пакетов, инструментов и конфигураций, расширив базовый образ среды выполнения.

Базовые образы

Sandbox SDK предлагает несколько вариантов образов на основе Ubuntu. Выберите тот, который подходит для вашей задачи:

Изображение Суффикс тега Сценарий использования
По умолчанию (нет) Облегченный образ для нагрузок JavaScript/TypeScript
Python -python Data science, ML, выполнение кода Python
OpenCode -opencode ИИ-агенты для программирования с OpenCode CLI
# Default - lean, no Python
FROM docker.io/cloudflare/sandbox:0.7.0

# Python - includes Python 3.11 + data science packages
FROM docker.io/cloudflare/sandbox:0.7.0-python

# OpenCode - includes OpenCode CLI for AI coding
FROM docker.io/cloudflare/sandbox:0.7.0-opencode

Образ по умолчанию

Образ по умолчанию оптимизирован для нагрузок на JavaScript и TypeScript:

Образ Python

-python вариант включает всё, что есть в образе по умолчанию, а также:

образ OpenCode

-opencode вариант включает всё, что есть в образе по умолчанию, а также:

Создание пользовательского образа

Создайте Dockerfile в корневом каталоге вашего проекта:

Dockerfile
FROM docker.io/cloudflare/sandbox:0.7.0-python

# Install additional Python packages
RUN pip install --no-cache-dir \
    scikit-learn==1.3.0 \
    tensorflow==2.13.0 \
    transformers==4.30.0

# Install Node.js packages globally
RUN npm install -g typescript ts-node prettier

# Install system packages
RUN apt-get update && apt-get install -y \
    postgresql-client \
    redis-tools \
    && rm -rf /var/lib/apt/lists/*

Обновите wrangler.jsonc чтобы указать ваш Dockerfile:

wrangler.jsonc
{
	"containers": [
		{
			"class_name": "Sandbox",
			"image": "./Dockerfile",
		},
	],
}

Когда вы выполняете wrangler dev или wrangler deploy, Wrangler автоматически собирает ваш Docker-образ и отправляет его в реестр контейнеров Cloudflare. Собирать и публиковать образы вручную не нужно.

Использование произвольных базовых образов

Вы можете добавить возможности sandbox в любой образ Docker с помощью автономного бинарного файла. Такой подход позволяет использовать уже имеющиеся образы, не завися от базовых образов Cloudflare:

Dockerfile
FROM your-custom-image:tag

# Copy the sandbox binary from the official image
COPY --from=docker.io/cloudflare/sandbox:0.7.0 /container-server/sandbox /sandbox

ENTRYPOINT ["/sandbox"]

/sandbox бинарный файл запускает сервер HTTP API, обеспечивающий взаимодействие с SDK. При необходимости вы можете указать собственную команду запуска:

Dockerfile
FROM node:20-slim

COPY --from=docker.io/cloudflare/sandbox:0.7.0 /container-server/sandbox /sandbox

# Copy your application
COPY . /app
WORKDIR /app

ENTRYPOINT ["/sandbox"]
CMD ["node", "server.js"]

При использовании CMD, бинарный файл sandbox запускает вашу команду как дочерний процесс с корректной передачей сигналов.

Пользовательские скрипты запуска

Для более сложных сценариев запуска создайте собственный стартовый скрипт:

Dockerfile
FROM docker.io/cloudflare/sandbox:0.7.0-python

COPY my-app.js /workspace/my-app.js
COPY startup.sh /workspace/startup.sh
RUN chmod +x /workspace/startup.sh

CMD ["/workspace/startup.sh"]

Базовый образ уже задаёт правильные ENTRYPOINT, поэтому вам нужно указать только CMD. Бинарный файл песочницы запускает сервер HTTP API, а затем создаёт ваш CMD как дочерний процесс с корректной передачей сигналов.

startup.sh
#!/bin/bash

# Start your services in the background
node /workspace/my-app.js &

# Start additional services
redis-server --daemonize yes
until redis-cli ping; do sleep 1; done

# Keep the script running (the sandbox binary handles the API server)
wait