ベースランタイムイメージを拡張し、独自のパッケージ、ツール、設定でサンドボックスのコンテナイメージをカスタマイズします。
Sandbox SDK は、Ubuntu ベースのイメージバリアントを複数提供します。用途に合うものを選びます。
| イメージ | タグ接尾辞 | 用途 |
|---|---|---|
| デフォルト | (なし) | JavaScript / TypeScript 向けの軽量イメージ |
| Python | -python |
データサイエンス、ML、Python コード実行 |
| OpenCode | -opencode |
OpenCode CLI 付きの AI コーディングエージェント |
# 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 のワークロード向けに最適化されています。
- Ubuntu 22.04 LTS ベース
- Node.js 20 LTS と npm
- Bun 1.x(JavaScript / TypeScript ランタイム)
- システムユーティリティ: curl、wget、git、jq、zip、unzip、file、procps、ca-certificates
-python バリアントは、デフォルトイメージの内容に加えて次を含みます。
- pip と venv 付きの Python 3.11
- 事前インストール済みパッケージ: matplotlib、numpy、pandas、ipython
-opencode バリアントは、デフォルトイメージの内容に加えて次を含みます。
- AI コーディングエージェント向けの OpenCode CLI ↗
プロジェクトルートに 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 を参照します。
{
"containers": [
{
"class_name": "Sandbox",
"image": "./Dockerfile",
},
],
}wrangler dev または wrangler deploy を実行すると、Wrangler は Docker イメージを自動でビルドし、Cloudflare のコンテナレジストリへプッシュします。手動でのビルドや公開は不要です。
スタンドアロンバイナリを使い、任意の Docker イメージへサンドボックス機能を追加できます。Cloudflare のベースイメージに依存せず、既存イメージを使えます。
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 バイナリは、SDK 通信を可能にする HTTP API サーバーを起動します。任意で、独自の起動コマンドも実行できます。
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 を使うと、サンドボックスバイナリはコマンドを子プロセスとして実行し、シグナルを正しく転送します。
より複雑な起動手順には、カスタム起動スクリプトを作成します。
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 を子プロセスとして起動し、シグナルを正しく転送します。
#!/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- イメージ管理 - Cloudflare のレジストリへのイメージのビルドとプッシュ
- Wrangler の設定 - wrangler.jsonc でのカスタムイメージの使い方
- Docker ドキュメント ↗ - Dockerfile の完全な構文
- コンテナの概念 - ランタイム環境の理解