Pythonプロジェクトをデプロイ
Zeaburはさまざまな種類のPythonプロジェクトをサポートしており、以下に限らず、次のようなプロジェクトが含まれます:
ソースコードに app.py
、main.py
などのエントリーポイントが含まれている場合、Zeaburは自動的に起動します。
NPM サポート
プロジェクトのルートディレクトリに package.json
がある場合、Zeabur は自動的に Node.js と NPM をインストールします。さらに、package.json
に build
スクリプトが含まれている場合、Zeabur は自動的に npm install && npm run build
を実行して成果物をコンパイルします。
ビルドコマンドを変更する必要がある場合(例えば npm run build:dist
を実行する場合)、〈カスタムビルドおよび起動コマンド〉を参照してください。
カスタムエントリーポイント
Zeabur はデフォルトで main.py
、app.py
、manage.py
、server.py
、app/__init__.py
のエントリーポイントを認識しますが、あなたのエントリーポイントが上記リストにない場合、環境変数を設定できます
ZBPACK_PYTHON_ENTRY=your-entrypoint.py
または、zbpack.json
に以下の設定を追加します:
{
"python": {
"entry": "your-entrypoint.py"
}
}
このようにして、Zeabur は your-entrypoint.py
を Python の実行ファイルとして使用します。
WSGI/ASGI アプリケーション(Django、Flask、FastAPI など)をデプロイしたい場合で、エントリーポイントが __init__.py
内にある場合、完全なパス(__init__.py
を含む)を指定する必要があります:
# server/__init__.py
app = Flask(__name__)
ZBPACK_PYTHON_ENTRY=server/__init__.py
エントリーポイントが __main__.py
にある場合も、完全なパスを指定する必要があります:
# server/__main__.py
print("Hello!")
ZBPACK_PYTHON_ENTRY=server/__main__.py
カスタムビルドおよび起動コマンド
Zeabur は、環境変数や設定ファイルを使用して Python のビルドおよび起動コマンドをカスタマイズすることを許可しています。
「ビルドコマンド」は、カスタム成果物(CSS、JavaScript など)をダウンロードまたはコンパイルする必要がある場合や、設定ファイルを構成するシナリオに適しています。例えば、/etc
フォルダに設定ファイルを書き込みたい場合、環境変数を次のように設定できます。
ZBPACK_BUILD_COMMAND=echo 'your-configuration' > /etc/somewhere
または、zbpack.json
に以下の設定を追加します。
{
"build_command": "echo 'your-configuration' > /etc/somewhere"
}
ここで npm のコマンドも実行できます。Zeabur はプロジェクトの ルートディレクトリ に package.json
がある場合にのみ Node.js と NPM をインストールします。プロジェクトに package.json
がない場合、npm
コマンドは使用できません。
{
"build_command": "npm install && npm run build:dist"
}
「起動コマンド」は Python アプリケーションを起動する際に使用するシナリオに適しています。例えば、元のコマンドに python3 migrate.py
を追加してデータベースのテーブルを作成する場合、環境変数を次のように設定できます。
ZBPACK_START_COMMAND="python3 migrate.py && _startup"
または、zbpack.json
に以下の設定を追加します。
{
"start_command": "python3 migrate.py && _startup"
}
ここで _startup
は Zeabur の元の起動コマンドです(詳細は zbpack で確認できます)。カスタムの start_command
を設定する場合、_startup
を起動コマンド内で実行する必要があります。そうしないと Python アプリケーションは起動しません。
build_command
および start_command
は POSIX 互換のシェルで実行されるため、&&
を使用して複数のコマンドを連結することや、;
を使用して複数のコマンドを区切ることができます。
ウェブスクレイピング
Playwright のサポート
依存関係リスト(requirements.txt
、Pipfile
、pyproject.toml
など)に playwright
が宣言されている場合、Zeabur は Playwright を実行するために必要な環境を自動的に準備します。
Playwright は ヘッドレス モードで実行する必要があることに注意してください。通常はデフォルトでそのように設定されています。
Selenium のサポート
依存関係リスト(requirements.txt
、Pipfile
、pyproject.toml
など)に seleniumbase
または selenium
が宣言されている場合、Zeabur は Selenium を実行するために必要な環境を自動的に準備します。
Selenium は ヘッドレス モードで実行する必要があることに注意してください。
Pythonのバージョンを設定する
ZeaburはデフォルトでPython 3.10を実行環境として使用しますが、プロジェクトで設定されたPythonのバージョンに基づいて実行環境を選択します。また、必要に応じて実行環境をカスタマイズすることもできます。
プロジェクトでPythonのバージョンを指定する
「プロジェクトでPythonのバージョンを指定する」は、すべての環境で使用できる一般的な方法です。
Pipenvの場合、 Pipfile
でPythonのバージョンを指定してください:
[requires]
python_version = "3.8" # ここでPythonのバージョンを指定します
Poetryの場合、 pyproject.toml
でPythonのバージョンを指定してください:
[tool.poetry.dependencies]
python = "^3.8" # ここでPythonのバージョンを指定します
PDMの場合、 pyproject.toml
で requires-python
を指定してください:
[project]
requires-python = ">= 3.8" # ここでPythonのバージョンを指定します
Ryeの場合、 rye pin
コマンドを使用してPythonのバージョンを設定してください:
rye pin 3.8 # ここでPythonのバージョンを指定します
ZeaburでPythonのバージョンを指定する
従来の requirements.txt
を使用している場合、またはプロジェクトで指定されたPythonのバージョンをZeaburで上書きする必要がある場合は、 zbpack.json
でPythonのバージョンを指定できます。
{
"python": {
"version": "3.8"
}
}
または、 ZBPACK_PYTHON_VERSION
環境変数を使用してPythonのバージョンを指定します:
ZBPACK_PYTHON_VERSION=3.8
Streamlit 実行ファイルの指定
streamlit
の依存関係をインストールしていて、ファイル名が app.py
、main.py
、streamlit_app.py
の場合、Zeabur はデフォルトで Streamlit モードでアプリケーションを起動します。
ただし、ファイル名がこれらの3つのいずれでもない場合、zbpack.json
でファイル名を指定できます。例えば、Streamlit アプリケーションのファイル名が myapp.py
の場合:
{
"streamlit": {
"entry": "myapp.py"
}
}
このようにすると、Zeabur は myapp.py
を Streamlit モードで起動します。環境変数 ZBPACK_STREAMLIT_ENTRY
を使用してファイル名を指定することもできます:
ZBPACK_STREAMLIT_ENTRY=myapp.py
カスタムパッケージマネージャー
Zeabur は複数の Python パッケージマネージャーをサポートしています:
Zeabur はプロジェクトの構造に基づいて最適なパッケージマネージャーを選択します。もしパッケージ管理の lockfile を提出せず、プロジェクト構造からどのパッケージマネージャーが使用されているかを明確に判断できない場合、Zeabur はパッケージをインストールしません。この場合、次のように zbpack.json
内でパッケージマネージャーを指定できます:
{
"python": {
"package_manager": "pipenv"
}
}
または、環境変数 ZBPACK_PYTHON_PACKAGE_MANAGER
を使用してパッケージマネージャーを指定することもできます:
ZBPACK_PYTHON_PACKAGE_MANAGER=pipenv
値は pip
、pipenv
、poetry
、pdm
、rye
、uv
のいずれかです。