Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Dockerfile リファレンス

最終更新 Markdown で表示Agent セットアップ

ベースランタイムイメージを拡張し、独自のパッケージ、ツール、設定でサンドボックスのコンテナイメージをカスタマイズします。

ベースイメージ

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 イメージ

-python バリアントは、デフォルトイメージの内容に加えて次を含みます。

  • pip と venv 付きの Python 3.11
  • 事前インストール済みパッケージ: matplotlib、numpy、pandas、ipython

OpenCode イメージ

-opencode バリアントは、デフォルトイメージの内容に加えて次を含みます。

カスタムイメージを作成する

プロジェクトルートに Dockerfile を作成します。

Dockerfiledockerfile
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.jsoncjsonc
{
	"containers": [
		{
			"class_name": "Sandbox",
			"image": "./Dockerfile",
		},
	],
}

wrangler dev または wrangler deploy を実行すると、Wrangler は Docker イメージを自動でビルドし、Cloudflare のコンテナレジストリへプッシュします。手動でのビルドや公開は不要です。

任意のベースイメージを使う

スタンドアロンバイナリを使い、任意の Docker イメージへサンドボックス機能を追加できます。Cloudflare のベースイメージに依存せず、既存イメージを使えます。

Dockerfiledockerfile
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 サーバーを起動します。任意で、独自の起動コマンドも実行できます。

Dockerfiledockerfile
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 を使うと、サンドボックスバイナリはコマンドを子プロセスとして実行し、シグナルを正しく転送します。

カスタム起動スクリプト

より複雑な起動手順には、カスタム起動スクリプトを作成します。

Dockerfiledockerfile
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.shbash
#!/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

関連リソース

役に立ちましたか?